Ошибка при использовании параметра OUTPUT с sp_execute - PullRequest
2 голосов
/ 18 августа 2011

У меня проблема с динамическим SQL и я сократил свой код до этого самого простого примера Почему это:

DECLARE @Statement NVARCHAR(1000), @Name SYSNAME;
SET @Statement = N'SELECT TOP 1 @Name = name from sys.objects';
EXEC sp_execute @Statement, N'@Name SYSNAME OUTPUT', @Name OUTPUT;

Дай мне это:

Msg 214, Level 16, State 2, Procedure sp_execute, Line 1
Procedure expects parameter '@handle' of type 'int'.

Какой правильный синтаксис?

Я тоже пробовал:

DECLARE @Statement NVARCHAR(1000), @Name SYSNAME;
SET @Statement = N'SELECT TOP 1 @NameOUT = name from sys.objects';
EXEC sp_execute @Statement, N'@NameOUT SYSNAME OUTPUT', @NameOUT = @Name OUTPUT;

Но была такая же ошибка.

1 Ответ

11 голосов
/ 18 августа 2011

Я думаю, что вы хотели использовать вместо sp_executesql, поскольку вы выполняете строку SQL. Сравните документацию: sp_execute против sp_executesql .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...