1

我試圖在存儲過程中動態地將變量插入到SQL Server表中,但由於語法,我無法完成它。有人能糾正我在下面的代碼中做錯了什麼。謝謝。在存儲過程中將變量插入到SQL Server表中

碼我曾嘗試:

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

回答

2

你是接近的,但你應該使用一個參數的值:如果打印出來@SQLStmt1

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

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

,你會看到單引號是不正確的。

+0

如何做到這一點,如果我在表中有多個列? – Teja

+2

您只需爲列添加其他參數。 –

-1

您可以通過添加三引號做「」」 這將解決您的問題

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

背後的原因是,在動態SQL三重引號將成爲一個單引號時的代碼得到執行。

+1

這是一個不好的做法,在使用接受參數的'sp_executesql'時尤其不必要。 –

相關問題