【发布时间】:2017-05-09 02:02:11
【问题描述】:
我需要以动态方式创建用户定义类型,但是
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;
错误:
消息 102,第 15 级,状态 1,第 1 行
“Id”附近的语法不正确。消息 102,第 15 级,状态 1,第 1 行
'@column' 附近的语法不正确。
我错过了什么?
【问题讨论】:
-
不能用参数指定列名。您需要为此执行动态 SQL。表名和任何 SQL 对象名也是如此。
标签: sql-server-2008 dynamic-sql sp-executesql