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
标签:
SQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-05-09 Layui 一个页面包含多个table时不展示分页条