`

sqlserver 遊標簡單示例

阅读更多

 

從一個表中查詢數據插入到另一個表的遊標示例:

Declare @Id varchar(20)
Declare @Name varchar(20)
Declare Cur Cursor For     //Cur遊標名稱
select fid,fname from  tbl_oper_info     //定义结果集的SELECT 语句
Open Cur
Fetch next From Cur Into @Id,@Name
While @@fetch_status=0
Begin
insert into temp(id,name)values(@id,@name)   //插入
Fetch Next From Cur Into @Id,@Name
End
Close Cur
Deallocate Cur

 

轉載一個sqlserver的遊標例子如下:

SQL Server游标例子
2007年12月24日 星期一 下午 11:22

 

有两张表,表1结构为"身份证号","姓名","编号", 表2结构为"姓名","身份证号","岗位工资","效益工资","工龄工资","房帖" 现在要生成一表,结构为"编号","姓名","非固定工资项目","金额".
例表1
------------------------
身份证号 姓名 编号
111111 张三 001.001
111112 李四 001.002
111113 王五 001.003

表二
-----------------------------
姓名 身份证号 岗位工资 效益工资 工龄工资 房帖
张三 111111 4300 2000 1000 500
李四 111112 3200 1800 800 450
王五 111113 3000 1600 700 400

求表结构为
-------------------------------------------------
编号 姓名 非固定工资项目 金额
001.001 张三 岗位工资 4300
001.001 张三 效益工资 2000
001.001 张三 工龄工资 1000
001.001 张三 房帖 800
001.002 李四 岗位工资 3200
001.002 李四 效益工资 1800
001.002 李四 工龄工资 800
001.002 李四 房帖 450
......
...
..
----------------------------------------

问题补充:用下面的语句生成测试数据
create table 表1 (身份证号 varchar(7),姓名 varchar(8),编号 varchar(7))
create table 表2 (姓名 varchar(8),身份证号 varchar(7),岗位工资 decimal(8,2),效益工资 decimal(8,2) ,工龄工资 decimal(8,2) ,房帖 decimal(8,2))

insert 表1 values ('111111', '张三', '001.001')
insert 表1 values ('111112', '李四', '001.002')
insert 表1 values ('111113', '王五', '001.003')

insert 表2 values('张三', '111111', 4300, 2000, 1000 , 500)
insert 表2 values ('李四', '111112' ,3200, 1800 , 800, 450 )
insert 表2 values ('王五', '111113' , 3000 , 1600 , 700 , 400)

还有一个特别重要的事情就是表2的工资项目有可能以后会添加,比如会添加高温补贴等.

-------------------------------------------------------------------------------------

declare @name varchar(10)
declare @sql varchar(8000)
declare @i int,@count int
select @i=1,@sql=' '
select @count=COUNT(*) from syscolumns where id=object_id('表2') and name <>'姓名' and name <>'身份证号'
declare www cursor for
        select name from syscolumns where id=object_id('表2') and name <>'姓名' and name <>'身份证号'
open www
     fetch www into @name
while (@@fetch_status=0)
      begin
        SELECT @sql= @sql + ' select 表1.编号,表1.姓名,''' + @name + ''' 非固定工资项目,'   + @name +
      ' 金额 from 表1 inner join 表2 on 表1.身份证号=表2.身份证号'
       -- SELECT @sql
         IF @I <> @count --select COUNT(*) from syscolumns where id=object_id('表') and name <>'姓名'
            BEGIN
               SELECT @sql= @sql + ' UNION '
            END
          SELECT @I=@I+1
        fetch www into @name
      end
close www
deallocate www
select @sql
exec   (@sql)

 

分享到:
评论

相关推荐

    SQL SERVER游标示例

    完整的SQL SERVER双层游标嵌套示例

    sqlserver 游标的简单示例

    Declare @Id varchar(20) Declare @Name varchar(20) Declare Cur Cursor For select substring(id,0,7) as id,name from temp1 Open Cur Fetch next From Cur Into @Id,@Name While @@fetch_status=0 Begin Update ...

    sqlserver游标使用步骤示例(创建游标 关闭游标)

    主要介绍了sqlserver游标使用步骤,包括创建游标、关闭游标,大家参考使用吧

    sql server 2008 存储过程示例带游标

    sql server 2008 存储过程示例带游标

    SQL Server存储过程示例

    SQL Server存储过程示例,在存储工程中Transaction使用示例,游标的使用示例,自定义异常的使用示例,以及Java调用SQL Server存储过程的示例代码。包括JDBC和Spring两种调用方式。

    sql server和oracle的存储过程、游标示例

    一些sql server和oracle存储过程示例

    游标嵌套 STATUS 异常 存储过程

    一个存储过程的示例,简单展示了如下方面: 1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,...

    使用游标更新数据库

    在上面的示例代码中,我们首先声明了一个名为 emp_cursor 的游标,该游标从 emp 表中选择所有列,并使用 FOR UPDATE 选项锁定了 sal 列。在循环体中,我们使用 WHERE CURRENT OF 子句来更新当前行对应的数据行。 7....

    sqlserver基础(示例、注释)

    本文件 适用于sqlserver初学者。 文档中对存储过程。游标。左右连接查询 等 有详细的示例 和注释。 简单易懂。

    MS SQL Server游标(CURSOR)的学习使用

    使用MS SQL Server这样久,游标一直没有使用过。以前都是使用WHILE循环加临时表来实现。刚刚联系个示例了解到游标概念与语法

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...

    SQL Server 2008高级程序设计 4/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

    SQLServer常见问题解决方法

    包含一些常见的SqlServer问题解决方法,包括:sa忘记密码怎么办?SQL server2008过期激活方法?SqlSever千万条以上记录分页数据库优化经验总结,删除所有存储过程的方法及一个简单的游标示例.

    SQL Server 2008高级程序设计 2/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

Global site tag (gtag.js) - Google Analytics