首页 > 数据库技术 > 详细

SQLSERVER 游标

时间:2018-07-10 12:13:27      阅读:159      评论:0      收藏:0      [点我收藏+]
ALTER PROCEDURE [dbo].[PROC_UpdMonthStatus]
AS
    BEGIN
        declare @a int,
        @error int,
        @Id varchar(36),
        @Area varchar(200),
        @Department varchar(200),
        @Year INT,
        @Month INT
        
        set @a=1
        set @error=0
        
         --申明游标为Uid
        declare order_cursor cursor 
        for (select Id,Area,Department,ReportYear,ReportMonth from AreaMonthReport where Status=3)
        --打开游标--
        open order_cursor
         --开始循环游标变量--
        fetch next from order_cursor into @Id,@Area,@Department,@Year,@Month
        while @@FETCH_STATUS = 0    --返回被 FETCH语句执行的最后游标的状态--
            begin
                ---添加一天办理记录            
                DECLARE @CreatorId varchar(36)
                SET @CreatorId=(select TOP 1 CreatorId from AuditOptions where AreaMonthReportId=@Id order by CreateTime desc)
                insert into AuditOptions(ID,Link,CreateUser,CreatorId,OptionText,CreateTime,AreaMonthReportId)
                values (NEWID(),总部审核,@CreatorId,‘‘,自动同意,GETDATE(),@Id)
                --修改ProjectMonthTrack
                update ProjectMonthTrack set ProjectStatus=5 where Area=@Area and Department=@Department and ReportYear=@Year and ReportMonth=@Month
                --修改AreaMonthReport
                update AreaMonthReport set Status=5 where Id=@Id
                
                
                set @a=@a+1
                set @error= @error + @@ERROR   --记录每次运行sql后是否正确,0正确
                fetch next from order_cursor into @Id,@Area,@Department,@Year,@Month   --转到下一个游标,没有会死循环
            end    
    END
GO

以上代码主要实现了一条添加,以及2条修改记录

SQLSERVER 游标

原文:https://www.cnblogs.com/dushaojun/p/9288192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!