这是在SQL Server 2008上运行的,但数据库处于SQL Server 2000兼容模式(这一点我无法更改)。
在存储过程开始时创建一个临时表,然后通过动态生成的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任何帮助理解这一点的人都将不胜感激!
谢谢!
发布于 2015-09-18 02:06:02
简而言之:在外部批处理中创建的临时表可以在动态SQL中访问,但反之亦然。
在存储过程完成时自动删除在该存储过程中创建的本地临时表。创建表的存储过程执行的任何嵌套存储过程都可以引用该表。调用创建表的存储过程的进程无法引用该表。
https://stackoverflow.com/questions/32637074
复制相似问题