如何在存储过程中将游标设置为动态创建的SQL查询

时间:2011-05-02 14:32:50

标签: sql sql-server-2000 database-cursor

我想使用@sqlQuery变量创建动态命令。我还声明了一个游标(例如:@myCursor)。我如何“为@sqlQuery设置@myCursor = CURSOR”。我刚才提到的语法不起作用。我正在使用SQL 2000。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

您可以使用sp_executesql执行此操作。只需确保在动态SQL中打开游标。

CREATE PROCEDURE OpenCursor (@query nvarchar(max), @cur cursor VARYING OUTPUT)
AS
    DECLARE @sql nvarchar(max)
    SET @sql = N'SET @cur = CURSOR STATIC FOR ' + @query + '; OPEN @cur'
    EXEC sp_executesql @sql, N'@cur cursor OUTPUT', @cur OUTPUT
GO

DECLARE @cur cursor
EXEC OpenCursor 'SELECT * FROM sysobjects', @cur OUTPUT
FETCH NEXT FROM @cur