这是在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
非常感谢任何理解这一点的帮助!
谢谢!
答案 0 :(得分:3)
不久: 外部批处理中创建的临时表可在动态SQL中访问,但反之亦然。
删除在存储过程中创建的本地临时表 存储过程完成后自动执行。 表可以 由存储的任何嵌套存储过程引用 创建表的过程。该表不能被引用 调用创建表的存储过程的过程。