TSQL - 动态复制表结构

时间:2017-11-08 16:03:59

标签: sql-server tsql

在一个循环中,我应该改变:

SELECT * INTO #copiaTabella FROM #TABELLA WHERE 1 = 2

动态

EXECUTE('SELECT * INTO #copiaTabella FROM ' + @sNomeTabella_APPO + ' WHERE 1 = 2')

所以它不起作用。有没有办法做到这一点? 谢谢

1 个答案:

答案 0 :(得分:0)

您应该知道,在外部作用域中看不到在动态T-SQL语句中创建的临时对象。例如,以下内容将引发错误:

EXECUTE sp_executesql N'CREATE TABLE #TEST ([a] INT);'

SELECT *
FROM #TEST;
  

消息208,级别16,状态0,行3无效的对象名称'#TEST'。

如果每次都需要创建不同的表结构,则必须在动态T-SQL语句中包含其余的T-SQL操作。