比較下面的存儲過程:什麼是存儲過程中的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