比较下面的存储过程:什么是存储过程中的exec内临时表的范围规则?
CREATE PROCEDURE testProc1
AS
SELECT * INTO #temp FROM information_schema.tables
SELECT * FROM #temp
GO
CREATE PROCEDURE testProc2
AS
EXEC('SELECT * INTO #temp FROM information_schema.tables')
SELECT * FROM #temp
GO
现在,如果我跑testProc1
,它的工作原理,并#temp
似乎只存在于该呼叫的持续时间。然而,testProc2
似乎并没有在所有的工作,因为我得到一个Invalid object name '#temp'
错误讯息。
为什么区分,如何使用临时表到SELECT * INTO
如果源表名是存储过程的参数并且可以有任意的结构?
请注意,我使用的是Microsoft SQL Server 2005中
把所有到一个EXEC作品。谢谢。 – polygenelubricants 2011-05-10 23:04:27