從一個表中查詢數據插入到另一個表的遊標示例:
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 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...
本篇文章将深入探讨SQL Server中的游标用法,并通过一个示例来展示其具体操作。 首先,我们要了解游标的组成部分和类型。在SQL Server中,游标有以下主要部分: 1. **声明(DECLARE)**:声明游标时,我们需要指定...
### SQL Server 游标的使用与事务管理 #### 一、游标的使用方法 在 SQL Server 中,游标是一种用于处理结果集中的数据行的一种机制。它允许开发人员逐行访问查询的结果,这对于需要对每一条记录进行特定操作的场景...
在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...
在提供的文件"SQL游标t和函数的用法.sql"中,很可能是包含了一些示例代码,演示如何在SQL Server中使用游标和函数。你可以通过运行这个文件来学习具体的用法和技巧。通过实践,你会更加熟练地掌握这些工具,从而在...
以下是这个游标示例的详细解释: 首先,我们声明了两个变量`@Id`和`@Name`,它们将用于存储从游标中获取的数据。这两个变量的类型是`varchar(20)`,分别用于存储ID和名称。 ```sql Declare @Id varchar(20) ...
在SQL Server中,游标(Cursor)是一种数据库查询机制,它允许我们一次处理查询结果集中的单行数据,而不是一次性获取整个结果集。游标在处理大量数据时特别有用,尤其是当我们需要逐行进行操作或者根据当前行的值来...
在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...
以下是一个创建名为 `CustomerCursor` 的游标示例,该游标将从 `customer` 表中选择所有账号编号、姓名和余额,其中 `province` 字段为空字符串。 ```sql DECLARE CustomerCursor CURSOR FOR SELECT acct_no, name,...
在SQL Server中,游标尤其有用,尤其是在需要逐行处理数据或按顺序执行一系列操作的情况下。以下是对SQL Server中游标使用步骤的详细解释: 1. **声明游标**: 在使用游标之前,首先需要声明它。声明游标涉及定义...
本文主要探讨了在SQL Server 2000中如何利用游标处理数据,并通过一个具体的示例来展示游标的使用方法。 #### 核心知识点解析 ##### 1. 游标简介 在SQL Server 2000中,游标是一种用于处理结果集中的行的机制。它...
下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用以及SQL Server 2008中的特性。 ### 存储过程 存储过程是预编译的SQL语句集合,存储在数据库服务器上,...
6. **游标示例**: 龙摆尾(坚行).sql.txt和游标实例.sql.txt很可能是包含具体游标使用示例的文件,可能涵盖了诸如迭代处理数据、基于条件更新数据等场景。实际应用中,游标常用于循环执行某个操作,例如批量更新...
总结,遍历SQL Server表中的记录,可以采用表变量配合循环的方式,或者使用游标。表变量方法简洁且对数据的影响可控,但可能需要额外删除已处理的行。游标提供了逐行处理的灵活性,但效率较低,应作为最后的手段。在...
在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...
通过这些示例,我们可以看出SQL Server和Oracle在存储过程和游标方面的基本用法。在实际应用中,根据业务需求,开发者可以灵活地组合和扩展这些基础结构,实现复杂的逻辑和操作。了解并熟练掌握这两大数据库的存储...