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'.
テーブル名と列の型をハードコーディングすると (両方を行う必要があります)、クエリは機能します。
ご参考までに、このコードをストアド プロシージャ内に配置して、誰かがテーブルを作成または変更したい場合に、追加の検証を実行できるこのストアド プロシージャを呼び出すようにします。