我已经接管了一个依赖于基于会话的临时表(#Table)的存储过程。该表是在存储过程中创建的,然后执行我的过程,引用该临时表。
在功能上它可以100%工作,但是在修改程序时,我的所有地方都有'错误'行,因为我的proc在设计时不知道#table是什么。我知道,这是一个非常严重的问题,但我也失去了代码提示。
是否有提示或任何解决方法让我的程序知道设计时的#table结构是什么?
答案 0 :(得分:0)
尝试执行临时表的创建。
"在SPID中创建的临时表可以从该SPID中的任何正在进行的执行中访问。"
答案 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创建的”。这种方法还具有将临时表结构记录到更靠近消耗位置的好处。