`

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双层游标嵌套示例

    sql server 游标实例

    ### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...

    SQL Server 游标用法

    本篇文章将深入探讨SQL Server中的游标用法,并通过一个示例来展示其具体操作。 首先,我们要了解游标的组成部分和类型。在SQL Server中,游标有以下主要部分: 1. **声明(DECLARE)**:声明游标时,我们需要指定...

    Sql Server 游标的使用 事务的使用

    ### SQL Server 游标的使用与事务管理 #### 一、游标的使用方法 在 SQL Server 中,游标是一种用于处理结果集中的数据行的一种机制。它允许开发人员逐行访问查询的结果,这对于需要对每一条记录进行特定操作的场景...

    sql server 游标试用方法 例子

    在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...

    SQLServer数据库游标和函数的使用(经典)

    在提供的文件"SQL游标t和函数的用法.sql"中,很可能是包含了一些示例代码,演示如何在SQL Server中使用游标和函数。你可以通过运行这个文件来学习具体的用法和技巧。通过实践,你会更加熟练地掌握这些工具,从而在...

    sqlserver 游标的简单示例

    以下是这个游标示例的详细解释: 首先,我们声明了两个变量`@Id`和`@Name`,它们将用于存储从游标中获取的数据。这两个变量的类型是`varchar(20)`,分别用于存储ID和名称。 ```sql Declare @Id varchar(20) ...

    sqlserver游标存储过程的使用

    在SQL Server中,游标(Cursor)是一种数据库查询机制,它允许我们一次处理查询结果集中的单行数据,而不是一次性获取整个结果集。游标在处理大量数据时特别有用,尤其是当我们需要逐行进行操作或者根据当前行的值来...

    sqlserver --游标 实现数据分页

    在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...

    sqlserver游标深解

    以下是一个创建名为 `CustomerCursor` 的游标示例,该游标将从 `customer` 表中选择所有账号编号、姓名和余额,其中 `province` 字段为空字符串。 ```sql DECLARE CustomerCursor CURSOR FOR SELECT acct_no, name,...

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

    在SQL Server中,游标尤其有用,尤其是在需要逐行处理数据或按顺序执行一系列操作的情况下。以下是对SQL Server中游标使用步骤的详细解释: 1. **声明游标**: 在使用游标之前,首先需要声明它。声明游标涉及定义...

    SQL Server2000游标例子

    本文主要探讨了在SQL Server 2000中如何利用游标处理数据,并通过一个具体的示例来展示游标的使用方法。 #### 核心知识点解析 ##### 1. 游标简介 在SQL Server 2000中,游标是一种用于处理结果集中的行的机制。它...

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

    下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用以及SQL Server 2008中的特性。 ### 存储过程 存储过程是预编译的SQL语句集合,存储在数据库服务器上,...

    SQL经典游标使用方法

    6. **游标示例**: 龙摆尾(坚行).sql.txt和游标实例.sql.txt很可能是包含具体游标使用示例的文件,可能涵盖了诸如迭代处理数据、基于条件更新数据等场景。实际应用中,游标常用于循环执行某个操作,例如批量更新...

    SQL Server遍历表中记录的2种方法(使用表变量和游标)

    总结,遍历SQL Server表中的记录,可以采用表变量配合循环的方式,或者使用游标。表变量方法简洁且对数据的影响可控,但可能需要额外删除已处理的行。游标提供了逐行处理的灵活性,但效率较低,应作为最后的手段。在...

    MS SQL Server2005存储过程、游标、游标嵌套综合例子

    在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...

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

    通过这些示例,我们可以看出SQL Server和Oracle在存储过程和游标方面的基本用法。在实际应用中,根据业务需求,开发者可以灵活地组合和扩展这些基础结构,实现复杂的逻辑和操作。了解并熟练掌握这两大数据库的存储...

Global site tag (gtag.js) - Google Analytics