TSQL:从另一个存储过程调用存储过程并读取结果

时间:2010-06-14 16:57:11

标签: sql tsql stored-procedures

我有一个存储过程,以SELECT结尾,返回一个记录集。我可以在另一个存储过程中调用它,如下所示:

EXEC procedure @param

如何获取返回的记录集?感谢

5 个答案:

答案 0 :(得分:33)

您可以创建临时表,然后使用INSERT INTO #MyTable EXEC procedure @param

还有其他techniques listed here

答案 1 :(得分:3)

AFAIK,你做不到。你可能想要做的是为你的第一个(或两个)程序使用一个函数。函数只能返回一个东西,但它们可以返回一个表。存储过程可以返回多个结果,但不能返回其他函数/存储过程。

e.g:

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
    ...

答案 2 :(得分:2)

如果您使用的是SQL Server 2008,我建议您返回一个表值参数。

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

答案 3 :(得分:1)

您可以使用存储过程中的输出变量执行此操作。例如:

CREATE PROCEDURE sp_HelloWorld   @MyReturnValue int OUT
AS
SELECT @MyReturnValue = 100
Return @MyReturnValue 

要调用此存储过程,请执行以下操作:

DECLARE @TestReturnVal int 

EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal 

答案 4 :(得分:1)

首先,您不能通过存储过程 RETURN 记录集。通过返回,存储过程只能返回整数。

您提到了SELECT语句,它是一个DQL,仅用于显示目的。

解决此问题的方法是,您可以将记录集分配给全局临时表,该表也可以在外部存储过程中访问。