SQL SERVER 拼字符串方式 动态表名 游标变量范例

本文介绍两个SQL Server存储过程示例:第一个创建一个动态游标并返回该游标;第二个存储过程则调用第一个存储过程并遍历返回的游标,演示如何在SQL中使用游标进行数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储过程1:

CREATE PROCEDURE [dbo].[pro_get_cursor]
    @In_TableName nvarchar(200),
    @Out_CurrencyCursor CURSOR VARYING OUTPUT
AS
    declare @sql nvarchar(2000)
    set @sql=N'DECLARE CurrencyCursor CURSOR
          FORWARD_ONLY STATIC FOR
          SELECT * FROM '+@In_TableName
    EXEC(@sql)
    OPEN CurrencyCursor;
    SET @Out_CurrencyCursor = CurrencyCursor;

 

 

存储过程2:(调用存储过程1)

CREATE PROCEDURE [dbo].[pro_test_c]
AS
BEGIN
DECLARE @MyCursor CURSOR;
    declare @str1 varchar(100)
    declare @str2 varchar(100)
        declare @str3 varchar(100)
    declare @str4 nvarchar(100)
    declare @str5 nvarchar(100)
    declare @i int=1
    EXEC dbo.pro_get_cursor '表名',@Out_CurrencyCursor = @MyCursor OUTPUT;

    FETCH NEXT FROM @MyCursor into @str1,@str2,@str3,@str4,@str5
WHILE (@@FETCH_STATUS = 0)
BEGIN;
     print convert(nvarchar(5),@i)
     set @i= @i+1
     FETCH NEXT FROM @MyCursor into @str1,@str2,@str3,@str4,@str5
END;

CLOSE @MyCursor;
DEALLOCATE @MyCursor

--注意此处: 调用存储过程1的游标的不能再次CLOSE,只能催毁对像。否则异常发生。

--CLOSE CurrencyCursor
DEALLOCATE CurrencyCursor

 

 

--以下代码可以用来查看游标的列表

--DECLARE @Report CURSOR

-- Execute sp_cursor_list into the cursor variable.
--EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
--      @cursor_scope = 3

---- Fetch all the rows from the sp_cursor_list output cursor.
--FETCH NEXT from @Report
--WHILE (@@FETCH_STATUS <> -1)
--BEGIN
--   FETCH NEXT from @Report
--END
--CLOSE @Report
--DEALLOCATE @Report

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值