![](/img/trans.png)
[英]SELECT Column AS @ParameterName in SQL Server stored procedure
[英]Select a column returned by a stored procedure
我有一個存儲過程,它返回我約50列。 我想編寫一個查詢,在那里我將能夠從SP返回的列列表中選擇一個特定的列。
我嘗試select RSA_ID from exec(uspRisksEditSelect '1')
編寫select RSA_ID from exec(uspRisksEditSelect '1')
但它給我一個錯誤。 我想我們需要為它編寫一些動態的sql。 但我是新手。
您不能直接使用存儲過程的結果 - 您需要將其存儲到內存或臨時表中並從那里開始:
DECLARE @tableVar TABLE (ID INT, Name VARCHAR(50)) -- whatever your sp returns
INSERT INTO @tableVar
EXEC uspRisksEditSelect '1'
SELECT RSA_ID FROM @tableVar
但絕對沒有必要使用動態SQL .....
您應該編寫一個表值用戶函數。
如果您能夠修改存儲過程,則可以輕松地將所需列數作為參數:
CREATE PROCEDURE sp_GetDiffDataExample
@columnsStatement NVARCHAR(MAX) -- Needed columns
AS
BEGIN
DECLARE @query NVARCHAR(MAX)
SET @query = N'SELECT ' + @columnsStatement + N' INTO ##TempTable FROM dbo.TestTable'
EXEC sp_executeSql @query
SELECT * FROM ##TempTable
DROP TABLE ##TempTable
END
在這種情況下,您無需手動創建臨時表 - 它會自動創建。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.