我正在尝试使用 sp_executesql 创建一个表,但我不断收到一条错误消息,提示“'@_TableName' 附近的语法不正确。知道我在这里做错了什么吗?
这是我正在使用的代码:
DECLARE @SQLString NVARCHAR(MAX),
@ParamDefinition NVARCHAR(MAX),
@TableName NVARCHAR(MAX);
SET @TableName = N'[dbo].[MyTable]';
SET @SQLString = N'SELECT * FROM @_TableName;';
SET @ParamDefinition = N'@_TableName NVARCHAR(max)';
EXEC sp_executesql @SQLString, @ParamDefinition,
@_TableName = @TableName;
这会产生错误:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '@_TableName'.
如果我对表名和列类型进行硬编码(我必须两者都做),那么查询就可以工作,否则我会得到这两个变量的不正确语法消息。
如果你想知道,我想把这段代码放在一个存储过程中,这样如果有人想创建或修改一个表,他们就会调用这个可以运行额外验证的存储过程。