开发者

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

I have a stored procedure that, ending with a SELECT, returns a recordset. I can call it within anoher stored procedure like this:

EXEC procedure @param

How to get the returning recordset? Th开发者_JS百科anks


You can create a temp table and then use INSERT INTO #MyTable EXEC procedure @param.

There are some other techniques listed here.


AFAIK, you can't. What you probably want to do is use a function for your first (or both) procedures. Functions can only return one thing, but they can return a table. Stored procedures can return multiple results, but not to other functions/stored procedures.

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


If you are using SQL Server 2008, I would recommend returning a Table-Valued Parameter.

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


You can do this with an output variable in the stored proc. For example:

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

To call this stored proc, do the following:

DECLARE @TestReturnVal int 

EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal 


First, you CANNOT RETURN a recordset by stored procedure. By return, a stored procedure can only return integers.

You mentioned SELECT statement, which is a DQL and just for display purpose.

The way you can do to work around this issue is that you can assign the recordset to a global temporary table which can also be accessed within the outer stored procedure.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜