簡體   English   中英

選擇存儲過程返回的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM