我正在寫SQL Server 2005中的存儲過程,在給定點我需要執行另一個存儲過程。這種調用是動態的,所以我用sp_executesql的命令和往常一樣:sp_executesql和表輸出
DECLARE @DBName varchar(255)
DECLARE @q varchar(max)
DECLARE @tempTable table(myParam1 int, -- other params)
SET @DBName = 'my_db_name'
SET q = 'insert into @tempTable exec ['[email protected]+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
但我得到這個錯誤:
Must declare the scalar variable "@tempTable".
正如你可以看到,變量聲明。我已閱讀documentation,似乎只允許參數是文本,ntext和圖像。我怎麼能得到我需要的東西?
PS:我發現很多的技巧在2008年和進一步的版本,任何於2005年
從2005年開始了一段時間,但@不是Temptable的範圍僅限於當前的程序,而不是程序的ExecuteSQL ... – Sparky
它沒有任何與sp_executesql的。它必須處理表變量的範圍。接下來要考慮的是使用臨時表,但我確信它也會失敗,因爲sp_executesql運行在不同的線程上。 –