来自另一个进程和Management Studio的临时表

时间:2017-05-03 01:12:24

标签: sql-server stored-procedures

我已经接管了一个依赖于基于会话的临时表(#Table)的存储过程。该表是在存储过程中创建的,然后执行我的过程,引用该临时表。

在功能上它可以100%工作,但是在修改程序时,我的所有地方都有'错误'行,因为我的proc在设计时不知道#table是什么。我知道,这是一个非常严重的问题,但我也失去了代码提示。

是否有提示或任何解决方法让我的程序知道设计时的#table结构是什么?

2 个答案:

答案 0 :(得分:0)

尝试执行临时表的创建。

"在SPID中创建的临时表可以从该SPID中的任何正在进行的执行中访问。"

http://sqlserverplanet.com/dba/spid-what-is-it

答案 1 :(得分:0)

如果我理解正确,你会遇到这样的情况:

exec dbo.usp_CreateTempTable; -- creates the temp table
exec dbo.usp_ConsumeTempTable; -- uses the temp table created above

如果是这种情况,请在第二个存储过程中执行以下操作

if object_id('tempdb.dbo.#yourTempTable') is null
   create table #yourTempTable (
      «table definition goes here»
   );

这应该安抚Intellisense,但是当你在上述条件下运行时却不能运行。我对它进行评论说“这个表预计是从dbo.usp_CreateTempTable创建的”。这种方法还具有将临时表结构记录到更靠近消耗位置的好处。