從一個表中查詢數據插入到另一個表的遊標示例:
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双层游标嵌套示例
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游标使用步骤,包括创建游标、关闭游标,大家参考使用吧
sql server 2008 存储过程示例带游标
SQL Server存储过程示例,在存储工程中Transaction使用示例,游标的使用示例,自定义异常的使用示例,以及Java调用SQL Server存储过程的示例代码。包括JDBC和Spring两种调用方式。
一些sql server和oracle存储过程示例
一个存储过程的示例,简单展示了如下方面: 1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,...
在上面的示例代码中,我们首先声明了一个名为 emp_cursor 的游标,该游标从 emp 表中选择所有列,并使用 FOR UPDATE 选项锁定了 sal 列。在循环体中,我们使用 WHERE CURRENT OF 子句来更新当前行对应的数据行。 7....
本文件 适用于sqlserver初学者。 文档中对存储过程。游标。左右连接查询 等 有详细的示例 和注释。 简单易懂。
使用MS SQL Server这样久,游标一直没有使用过。以前都是使用WHILE循环加临时表来实现。刚刚联系个示例了解到游标概念与语法
该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...
包含一些常见的SqlServer问题解决方法,包括:sa忘记密码怎么办?SQL server2008过期激活方法?SqlSever千万条以上记录分页数据库优化经验总结,删除所有存储过程的方法及一个简单的游标示例.
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...