簡體   English   中英

TSQL:從另一個存儲過程調用存儲過程並讀取結果

[英]TSQL: Call a stored procedure from another stored procedure and read the result

我有一個存儲過程,以SELECT結尾,返回一個記錄集。 我可以在另一個存儲過程中調用它,如下所示:

EXEC procedure @param

如何獲取返回的記錄集? 謝謝

您可以創建臨時表,然后使用INSERT INTO #MyTable 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,我建議您返回一個表值參數。

http://msdn.microsoft.com/en-us/library/bb510489.aspx

您可以使用存儲過程中的輸出變量執行此操作。 例如:

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.

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