Мне нужно создать определенный тип пользователя в динамике, ноsp_executesql бросает ошибку, но простой EXEC() работает
The 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. –