岚思榛 2024-05-29 17:52 采纳率: 25%
浏览 4
已结题

sqlserver 游标循环

问题:怎么在游标下循环当前游标,比如实现外游标在内游标执行前释放资源,在内游标执行完之后打开游标,继续下面的循环


CREATE PROCEDURE 存储过程
    @ID INT,
    @SUM int
AS
BEGIN

DECLARE @FID int


SET @FID = @ID
SET @COUNT = @SUM+1

DECLARE cur2 CURSOR FOR  select语句

OPEN cur2

FETCH NEXT FROM cur2 INTO 循环字段

WHILE @@FETCH_STATUS = 0

BEGIN
       --操作

    IF (条件) > 0
    BEGIN
            CLOSE cur2 -- 关闭游标
                --内游标
        EXEC UpdateAndInsertData2 @ID = @FID,@SUM = @COUNT
        OPEN cur2 -- 重新打开游标
    END

    FETCH NEXT FROM cur2 INTO 循环字段
END

CLOSE cur2

DEALLOCATE cur2

END



img

  • 写回答

3条回答 默认 最新

  • 岚思榛 2024-05-30 09:18
    关注

    解决办法:

    
    ```sql
    CREATE PROCEDURE UpdateAndInsertData2
        @ID INT,
        @SUM int
    AS
    BEGIN
    
    DECLARE @FID int
    DECLARE @COUNT int
    -- 声明游标
    DECLARE @outer_cursor CURSOR
    
    SET @FID = @ID
    SET @COUNT = @SUM+1
    
    -- 初始化游标
    SET @outer_cursor = CURSOR FOR  select语句
    
    OPEN @outer_cursor;
    
    FETCH NEXT FROM @outer_cursor INTO 循环字段
    
    WHILE @@FETCH_STATUS = 0
    
    BEGIN
       --操作
    
        IF ( 条件判断) > 0
        BEGIN
            -- 嵌套内游标
            EXEC UpdateAndInsertData2 @ID = @FID,@SUM = @COUNT
    
        END
    
    
        FETCH NEXT FROM @outer_cursor INTO 循环字段
    END
    
    -- 关闭和释放游标
    CLOSE @outer_cursor;
    DEALLOCATE @outer_cursor;
    
    END
    
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 matlab支持向量机使用错误
  • ¥99 利用C/C++语言,使用TCP/IP协议,编一个简易聊天程序
  • ¥15 如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口
  • ¥15 晶体塑性有限元——Damask求解
  • ¥30 设计一个图形用户界面来控制你机械臂的运动
  • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
  • ¥15 前端返回pdf时不显示内容
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图