我有一个存储过程,以SELECT结尾,返回一个记录集。我可以在另一个存储过程中调用它,如下所示:
EXEC procedure @param
如何获取返回的记录集?感谢
答案 0 :(得分:33)
您可以创建临时表,然后使用INSERT INTO #MyTable EXEC procedure @param
。
答案 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,我建议您返回一个表值参数。
答案 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,仅用于显示目的。
解决此问题的方法是,您可以将记录集分配给全局临时表,该表也可以在外部存储过程中访问。