[英]TSQL: Call a stored procedure from another stored procedure and read the result
我有一個存儲過程,以SELECT結尾,返回一個記錄集。 我可以在另一個存儲過程中調用它,如下所示:
EXEC procedure @param
如何獲取返回的記錄集? 謝謝
AFAIK,你做不到。 你可能想要做的是為你的第一個(或兩個)程序使用一個函數。 函數只能返回一個東西,但它們可以返回一個表。 存儲過程可以返回多個結果,但不能返回其他函數/存儲過程。
例如:
CREATE FUNCTION [dbo].[fn_GetSubordinates] (
@sPersonID VARCHAR(10),
@nLevels INT
)
RETURNS @tblSubordinates TABLE
(
Person_Id VARCHAR(10),
Surname char(25),
Firstname char(25)
)
AS
BEGIN
...
如果您使用的是SQL Server 2008,我建議您返回一個表值參數。
您可以使用存儲過程中的輸出變量執行此操作。 例如:
CREATE PROCEDURE sp_HelloWorld @MyReturnValue int OUT
AS
SELECT @MyReturnValue = 100
Return @MyReturnValue
要調用此存儲過程,請執行以下操作:
DECLARE @TestReturnVal int
EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal
首先,您不能通過存儲過程返回記錄集。 通過返回,存儲過程只能返回整數。
您提到了SELECT
語句,它是一個DQL,僅用於顯示目的。
解決此問題的方法是,您可以將記錄集分配給全局臨時表,該表也可以在外部存儲過程中訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.