我需要動態的方式創建用戶定義的類型,但sp_executesql的拋出錯誤,但簡單EXEC()的作品
的exec()
方式:
-- This works
DECLARE @column NVARCHAR(MAX) = 'Id INT'
EXEC ('CREATE TYPE dbo.MyDataType AS TABLE ('+ @column +')')
的sp_executesql
方式:
-- This does not work
DECLARE @column NVARCHAR(MAX) = 'Id INT'
EXECUTE sp_executesql N'CREATE TYPE dbo.MyDataType AS TABLE (@column)', @column;
錯誤:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Id'.Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '@column'.
我錯過了什麼?
您無法使用參數指定列名稱。您需要爲此執行動態SQL。表名和任何SQL對象名同樣如此。 –