T-SQL从动态SQL插入临时表

时间:2015-09-17 18:03:31

标签: sql-server sql-server-2008

这是在SQL Server 2008上运行,但数据库处于SQL Server 2000兼容模式(我无法更改)。

在存储过程的开头创建临时表,然后通过动态生成的SQL中的EXEC语句插入。这是如何成功执行的,即使临时表(应该是我的理解)超出执行范围,还是在存储过程中执行这些语句时会暂时绕过它?

以下示例:

CREATE PROCEDURE myProc (Param1 int....)
AS
BEGIN
   Declare @SQL varchar(max) = null

   Create table #tempTable 
   (
       ID int,
       Code1 varchar(255),
       ...
   )

   SET @SQL = 'insert into #tempTable '
              + ...
   EXEC(@SQL)

   Select * from #tempTable
END

非常感谢任何理解这一点的帮助!

谢谢!

1 个答案:

答案 0 :(得分:3)

不久: 外部批处理中创建的临时表可在动态SQL中访问,但反之亦然。

See doc

  

删除在存储过程中创建的本地临时表   存储过程完成后自动执行。 表可以   由存储的任何嵌套存储过程引用   创建表的过程。该表不能被引用   调用创建表的存储过程的过程。