Live2D

sqlserver 游标嵌套

游标嵌套

复制代码
BEGIN TRANSACTION; --事务
declare
@resourceId int --Id declare @newResourceId int --新的节Id declare @courseId int --课程Id declare @newCourseId int --新的课程Id declare @sign int--计数器 set @sign=0 DECLARE My_Cursor CURSOR --定义游标 FOR (select [1_Resource].Id from [1_Resource] where TrainTargetId=12 and IsDelete=0) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor INTO @resourceId; --读取第一行数据(将[1_Resource]表中的Id放到@resourceId变量中) WHILE @@FETCH_STATUS = 0 BEGIN set @sign+=1 print 'resourceId_'+convert(nvarchar(10),@resourceId)
--执行脚本后 如果有异常,回滚

IF @@ERROR <> 0
BEGIN
ROLLBACK ;
CLOSE my_cursor;
DEALLOCATE my_cursor;
END

--嵌套游标
         DECLARE My_Cursor_2 CURSOR --定义游标
            FOR 
            (select [1_CourseResource].CourseId from [1_CourseResource] where ResourceId = @resourceId) --查出需要的集合放到游标中
            OPEN My_Cursor_2; --打开游标
            FETCH NEXT FROM My_Cursor_2 INTO @courseId; --读取第一行数据(将[1_CourseResource]表中的CourseId放到@courseId变量中)
            WHILE @@FETCH_STATUS = 0
            begin    
                --需要执行的脚本
                FETCH NEXT FROM My_Cursor_2 INTO @courseId; --读取下一行数据(将1_CourseResource表中的CourseId放到@courseId变量中)
            end
            CLOSE My_Cursor_2; --关闭游标
            DEALLOCATE My_Cursor_2; --释放游标

        print @sign
                
        FETCH NEXT FROM My_Cursor INTO @resourceId; --读取下一行数据(将[1_Resource]表中的Id放到@resourceId变量中)
    END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标


COMMIT TRANSACTION;--没有问题,提交事务


GO
复制代码

 

posted @   webmtjj  阅读(699)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-05-09 Layui 一个页面包含多个table时不展示分页条
点击右上角即可分享
微信分享提示