1

我想使用动态 SQL 创建一个表。

如果我使用创建表

CREATE Table TodayTemp(id varchar(20))
DROP TABLE TodayTemp

那么就没有问题了。它工作正常。但是使用它的问题是我无法动态创建列。因此,我尝试在变量中使用 store create 脚本,然后最后使用EXEC命令执行它们。

喜欢

Declare @CreateTableCmd varchar(max)
SET @CreateTableCmd = 'CREATE Table TodayTemp(id varchar(20))'
Exec @CreateTableCmd

但这会导致错误

消息 2812,级别 16,状态 62,第 6 行
找不到存储过程“CREATE Table TodayTemp(id varchar(20))”。

4

3 回答 3

5

执行时在变量周围添加括号

Declare @CreateTableCmd varchar(max)
SET @CreateTableCmd = 'CREATE Table TodayTemp (id varchar(20))'
Exec (@CreateTableCmd)
     ^---------------^--------here

SQLFiddle 演示

于 2013-09-06T06:38:44.867 回答
1

如果你想用 exec 来执行你的脚本,可以这样调用它:

Exec (@CreateTableCmd)

另一种方法是使用sp_executesql存储过程:

exec sp_executesql @stmt = @CreateTableCmd

有很多链接比较这两种方法:

于 2013-09-06T06:38:59.153 回答
0
Declare @CreateTableCmd varchar(max)
SET @CreateTableCmd = 'CREATE Table TodayTemp'
Exec (@CreateTableCmd)

这应该够了吧

拉吉

于 2013-09-06T06:39:45.883 回答