在SQL Server 2008中的存储过程之间使用临时表

Ale*_*ois 2 t-sql stored-procedures temp-tables sql-server-2008

我目前有一个主存储过程调用许多存储过程:

Main --| 
     --|
       --| > Exec Pre-processing SP (create and populate #temp table)
     --|
       --| > Exec Actual update
     --|
       --| > Exec Post-Process (consume and drop #temp table)
Run Code Online (Sandbox Code Playgroud)

我目前遇到的问题是我需要从数据库中获取原始值,并将值传递到主存储过程,以便我可以在最后一步(存储过程)中调用更新后处理.

我无法更改存储过程签名或主存储过程.

当我尝试执行此方案时,我在后处理存储过程中得到一个无效对象.

如何将值从第一个存储过程传递到最后一个存储过程.

Dam*_*ver 7

您需要在调用层次结构中创建比使用它的所有存储过程更高的临时表.既然你说你无法改变Main,那么唯一的机会就是创建一个创建#temp然后调用的新的最外层程序Main.

然后,您可以修改预处理过程以填充现有表.您不需要在任何地方显式删除表.


或者,您可以创建一个永久表,并包含一个spid列,指示从哪个连接数据插入.您还要确保对该表的任何选择/删除再次使用该@@SPID值.我发布这个作为Session-global临时表的答案