1

ストアドプロシージャ内で動的にSQL Serverテーブルに変数を挿入しようとしていますが、構文のためにこれを実行できません。誰かが下のコードで間違っていることを私に訂正することはできますか?ありがとう。ストアドプロシージャのSQL Serverテーブルに変数を挿入します。

私が試してみましたコード:

SET @SQLStmt1 = N'INSERT INTO TestTable (TableName) 
        VALUES(' + @ResulTableName + N')' 
EXEC sp_executesql @SQLStmt1  

答えて

2

あなたが接近しているが、あなたが値のパラメータを使用する必要があります。

SET @SQLStmt1 = N'INSERT INTO TestTable(TableName) 
           VALUES(@ResulTableName)'; 

EXEC sp_executesql @SQLStmt1, N'@ResultTableName NVARCHAR(MAX)', 
        @ResulTableName = @ResulTableName; 

あなたが@SQLStmt1をプリントアウトする場合は、単一引用符ことを見ることが正しくない

+0

テーブルに複数の列がある場合、これを行うにはどうすればいいですか? – Teja

+2

列のパラメータを追加するだけです。 –

-1

あなたはトリプル引用符「を追加することによってそれを行うことができます」」 これはその背後にある理由は、コードが実行され得るとき、動的SQLでトリプル引用符は、単一引用符になるだろうということです、あなたの問題

SET @SQLStmt1 = N'INSERT INTO TestTable(TableName) 
           VALUES(''' + @ResulTableName + ''')' 
EXEC sp_executesql @SQLStmt1  

を解決します。

+1

これは悪い習慣です。特に、パラメータを受け入れる 'sp_executesql'を使用する場合は不要です。 –

関連する問題