Как установить курсор на динамически создаваемый SQL-запрос в хранимой процедуре - PullRequest
1 голос
/ 02 мая 2011

Я хочу создать динамическую команду, используя переменную @sqlQuery. Я также объявил курсор (пример: @myCursor). Как я могу "SET @myCursor = CURSOR FOR @sqlQuery". Синтаксис, который я только что отметил, не работает. Я использую SQL 2000.

Ответы [ 2 ]

2 голосов
/ 02 мая 2011
1 голос
/ 02 мая 2011

Вы можете сделать это, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...