我試圖在存儲過程中動態地將變量插入到SQL Server表中,但由於語法,我無法完成它。有人能糾正我在下面的代碼中做錯了什麼。謝謝。在存儲過程中將變量插入到SQL Server表中
碼我曾嘗試:
SET @SQLStmt1 = N'INSERT INTO TestTable (TableName)
VALUES(' + @ResulTableName + N')'
EXEC sp_executesql @SQLStmt1
我試圖在存儲過程中動態地將變量插入到SQL Server表中,但由於語法,我無法完成它。有人能糾正我在下面的代碼中做錯了什麼。謝謝。在存儲過程中將變量插入到SQL Server表中
碼我曾嘗試:
SET @SQLStmt1 = N'INSERT INTO TestTable (TableName)
VALUES(' + @ResulTableName + N')'
EXEC sp_executesql @SQLStmt1
你是接近的,但你應該使用一個參數的值:如果打印出來@SQLStmt1
SET @SQLStmt1 = N'INSERT INTO TestTable(TableName)
VALUES(@ResulTableName)';
EXEC sp_executesql @SQLStmt1, N'@ResultTableName NVARCHAR(MAX)',
@ResulTableName = @ResulTableName;
,你會看到單引號是不正確的。
您可以通過添加三引號做「」」 這將解決您的問題
SET @SQLStmt1 = N'INSERT INTO TestTable(TableName)
VALUES(''' + @ResulTableName + ''')'
EXEC sp_executesql @SQLStmt1
背後的原因是,在動態SQL三重引號將成爲一個單引號時的代碼得到執行。
這是一個不好的做法,在使用接受參數的'sp_executesql'時尤其不必要。 –
如何做到這一點,如果我在表中有多個列? – Teja
您只需爲列添加其他參數。 –