Sql 使用游标

DECLARE data_cursor CURSOR
FOR
    WITH    T0
              AS ( SELECT   COUNT(f.DeptID) SubmitCount ,
                            f.DeptID
                   FROM     biz.FormCollect f
                            INNER JOIN biz.Results r ON f.IID = r.ObjectID
                            INNER JOIN biz.NumberLimit n ON n.DeptID = f.DeptID
                   WHERE    r.[Status] = 1
                   GROUP BY f.DeptID
                 ),
            T1
              AS ( SELECT   b.BatchID ,
                            c.BatchName ,
                            n.IID ,
                            n.DeptName ,
                            t0.SubmitCount
                   FROM     biz.FormCollect f
                            INNER JOIN biz.BatchRelationShips b ON f.IID = b.FormID
                            INNER JOIN T0 ON T0.DeptID = f.DeptID
                            INNER JOIN biz.NumberLimit n ON n.DeptID = t0.DeptID
                            INNER JOIN bas.ChooseBatch c ON c.IID = b.BatchID
                   WHERE    c.ModuleID = 2
                 )
    SELECT DISTINCT
            IID ,
            BatchID ,
            SubmitCount
    FROM    T1
Go
OPEN data_cursor
DECLARE @IID INT ;
DECLARE @BatchID INT ;
DECLARE @SubmitCount INT ;

WHILE @@FETCH_STATUS = 0
    BEGIN
        FETCH NEXT FROM data_cursor INTO @IID, @BatchID, @SubmitCount

        PRINT @IID;
        PRINT @BatchID;
        PRINT @SubmitCount;
        PRINT ‘‘;

        INSERT  INTO biz.NumberLimitCount
                ( NumberLimitID ,
                  BatchID ,
                  LimitCount ,
                  CurrentCount ,
                  ModifyTime
                )
        VALUES  ( @IID , -- NumberLimitID - int
                  @BatchID , -- BatchID - int
                  0 , -- LimitCount - int
                  @SubmitCount , -- CurrentCount - int
                  GETDATE()  -- ModifyTime - datetime
                )
    END

CLOSE data_cursor
DEALLOCATE data_cursor
时间: 2024-10-25 05:00:17

Sql 使用游标的相关文章

SQL Server 游标

什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据. 一般复杂的存储过程,都会有游标的出现,他的用处主要有: 定位到结果集中的某一行. 对当前位置的数据进行读写. 可以对结果集中的数据单独操作,而不是整行执行相同的操作. 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁. 游标的分类 根据游标检测结果集变化的能力和消耗资源的情况不同,SQL

SQL SERVER 游标的使用

--基于查询声明游标 declare cur CURSOR FOR select id from OrderProducts where OrderCode =@OrderCode --select @OrderProductsId = id from OrderProducts where OrderCode [email protected] --打开游标 OPEN cur --读取下一个游标 FETCH NEXT FROM cur INTO @OrderProductsId --遍历游标记

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

说实的,使用MS SQL Server这样久,游标一直没有使用过.以前实现相似的功能,都是使用WHILE循环加临时表来实现.刚才有参考网上示例练习写了一下.了解到游标概念与语法.下面代码示例中,先是宣告你在游标中需使用变量,也就是临时存储处理字段的数据.2. 宣告一个游标,并SELECT需要处理的数据集.3. 打开游标(#8行代码).4. 从游标中拿来FETCH NEXT 数据给变量赋值.5. 循环@@FETCH_STATUS = 0条件.6. 在循环块,可以处理第一笔的记录逻辑了.本示例中是P

SQL 跳出游标 break

SQL 跳出游标 break  if xx<=30  begin        break  end  else  FETCH NEXT FROM 游标 INTO 参数 转载自http://tom-cat.blog.163.com/blog/static/393230201281631964/,感谢Tom 的博客 171106916的分享

sql的游标用法举例(Cursor)

sql的游标用法举例 DECLARE @Name varchar(40), @TrueName varchar(20) Declare authors_cursor Cursor For Select Name,TrueName From Account Open authors_cursor Fetch Next From authors_cursor INTO @Name, @TrueName While @@FETCH_STATUS = 0 Begin Print @TrueName+CO

sql server 游标的简单用法

sql server游标: --定义游标 declare cursor1 cursor for select ID,Name from A --打开游标 open cursor1 declare @id int declare @name varchar(50) declare @n int declare @i int=1 set @n=(select COUNT(1) from A) while(@i<@n) begin set @[email protected]+1 fetch next

Oracle_PL/SQL(3) 游标

引言:PLSQL数据类型标量数据类型:数字类.字符类.日期类.布尔类(boolean).复合数据类型:记录(%rowtype).表.数组引用类型:REF CURSORLOB类型:BLOB.CLOB 1.系统定义的记录:%rowtype使用%rowtype属性定义记录变量:可以基于表或视图定义记录变量当使用%ROWTYPE属性定义记录变量时,记录成员个数,名称,类型与表或视图列的个数, 名称,类型完全相同. 1.1 在select语句中使用PL/SQL记录declare v_emp emp%row

SQL Cursor 游标的使用

Contents SQL Cursor 游标的使用 这两天在做新老系统间的data migration,接触到sql的游标,记录总结一下. 我们的需求是要求map多张表,并把计算结果分别更新到一张目标表中, 新旧系统要做A/B Testing, 所以当旧表有任何更新,比如新增,删除,改动, 都要更新到新表中. 原本我选择的方案是采用批量Insert, 但碰到一个需要插入map关系的表, 其中一个field是另外一张表刚刚插入数据的id, 因此只能用循环来解决. 看了一圈SQL的for循环,实现起

SQL Server 游标使用

1.声明游标            DECLARE 游标名 CURSOR SELECT语句(注:此处一定是SELECT语句)        2.打开游标           OPEN 游标名        3.读取游标数据           Fetch [Next | Prior | First | Last | Absolute n | Relative n ]  From 游标名 INTO @name1,@name2...            WHILE(@@FETCH_STATUS =

SQL数据库游标

这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,