2014-10-04 37 views
1

我需要執行sp_executesql存儲過程並從中返回custom table type如何將sp_executesql的OUTPUT參數設置爲自定義表類型?

可能嗎?

我的代碼是

DECLARE @sSQL AS VARCHAR(MAX); 
DECLARE @tResult AS ttParamValues; 

SET @sSQL = 'SELECT ..... add some params in the concatanation'; 

EXEC sp_executesql @sSQL, @[email protected] OUT; 
SELECT * FROM @tResult; 

我收到錯誤:

Msg 348, Level 16, State 1, Line 96
The table variable "@tResult" can not be passed to a stored procedure with the OUTPUT option.

我讀表必須聲明爲READONLY但無法弄清楚如何做到這一點。

+0

'EXEC sp_executesql @sSQL ....'本來會返回結果集,您無需傳遞任何輸出參數就可以將結果集返回某種變量。如果您想要進一步從結果集中進行選擇,請在動態SQL語句中執行。 – 2014-10-04 13:20:42

+0

是的,@ M.Ali,但我想在* SQL表值函數*中使用該代碼,並且因爲它必須返回表類型,所以我嘗試通過自定義表值類型執行此操作。我需要這個函數,因爲我想和其他表格一起「加入」並提取數據。我假設不使用'global ##'臨時表,因爲我可能遇到隔離問題。 – 2014-10-04 13:29:24

+0

您不能使用動態sql insdie用戶定義的函數。 – 2014-10-04 13:40:12

回答

2

不,這是不可能的。表格時間參數是READONLY。由於該值無法修改,因此將參數指定爲OUTPUT是沒有意義的,返回的數據將始終爲提供的值。

請考慮返回結果集作爲數據類型XML,它可以作爲輸出參數返回。

相關問題