• sql 循环执行游标


    ---定义开始和结束时间
    declare @st_dt datetime
    declare @en_dt datetime
    ---时间赋值
    select @st_dt = '20150601'
    select @en_dt = '20150930'
     
    ---定义中间变量
    declare @dt datetime
    select @dt = @st_dt
     
    ---开始按照时间循环执行
    while @dt <= @en_dt
    begin
        ---这个是个演示,可以替换为需要执行的存储过程
      DECLARE @Tel varchar(50),
            @ID varchar(50)
    DECLARE Subscribe_Cursor CURSOR --定义游标
    FOR
    (
        select top 360 CONVERT(VARCHAR(20),CONVERT(DECIMAL(20,0),F1)),id from SData where Tag=0
    )
    OPEN Subscribe_Cursor; --打开游标
    FETCH NEXT FROM Subscribe_Cursor INTO @Tel,@ID
    WHILE @@FETCH_STATUS = 0
        BEGIN
        insert into LS_ReCall(Tel,ReCallPlanDate)values(@Tel,@dt)
        update SData set Tag=1 where id=@ID
         FETCH NEXT FROM Subscribe_Cursor INTO @Tel,@ID; 
        END
    CLOSE Subscribe_Cursor; --关闭游标
    DEALLOCATE Subscribe_Cursor; --释放游标
        ---中间变量加1
        select @dt = DATEADD(DAY,1,@dt)
        
    end
    
    
    
    ---定义开始和结束时间
    declare @st_dt datetime
    declare @en_dt datetime
    ---时间赋值
    select @st_dt = '20150602'
    select @en_dt = '20150930'
     
    ---定义中间变量
    declare @dt datetime
    select @dt = @st_dt
     
    ---开始按照时间循环执行
    while @dt <= @en_dt
    begin
          ---定义开始和结束工号
            declare @st_code int
            declare @en_code int
            ---工号赋值
            select @st_code =1
            select @en_code = 18
            ---定义中间变量
            declare @code int
            select @code = @st_code
            while @code <= @en_code
            begin
                    DECLARE @ID varchar(50)
            DECLARE Subscribe_Cursor CURSOR --定义游标
            FOR
            (
                  select top 20 id from LS_ReCall where ReCallPlanDate=@dt and EmpCode is null
            )
            OPEN Subscribe_Cursor; --打开游标
            FETCH NEXT FROM Subscribe_Cursor INTO @ID
            WHILE @@FETCH_STATUS = 0
                BEGIN
                update LS_ReCall set EmpCode=@code where id=@ID
                FETCH NEXT FROM Subscribe_Cursor INTO @ID; 
                END
            CLOSE Subscribe_Cursor; --关闭游标
            DEALLOCATE Subscribe_Cursor; --释放游标
            ---中间变量加1
           select @code = @code+1
            end
        ---中间变量加1
        select @dt = DATEADD(DAY,1,@dt)
        
    end
  • 相关阅读:
    中国各城市PM2.5数据间的相关分析
    vue中template的作用及使用
    Vue 点击获得父元素,子元素,兄弟元素(DOM操作)
    解决elementUI中message消息多次重复展现的问题
    Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated"}的解决方法
    v-focus给input设置焦点
    Cannot find name 'template'.Vetur 问题解决
    vue的prototype和拦截器
    Nginx下载启动
    Nginx负载均衡原理
  • 原文地址:https://www.cnblogs.com/panshengqiang/p/4588567.html
Copyright © 2020-2023  润新知