将OUTPUT参数与sp_execute一起使用时出错

Mar*_*man 2 sql-server-2005

我遇到动态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;
Run Code Online (Sandbox Code Playgroud)

告诉我这个:

Msg 214, Level 16, State 2, Procedure sp_execute, Line 1
Procedure expects parameter '@handle' of type 'int'.
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

我也尝试过:

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;
Run Code Online (Sandbox Code Playgroud)

但是有同样的错误.

Aar*_*and 11

我认为您打算使用sp_executesql,因为您正在执行SQL字符串.比较文档:sp_executesp_executesql.