Calling a Stored Proc from within a Stored Proc and returning a recordset

后端 未结 4 1420
情话喂你
情话喂你 2021-01-22 21:31

I have a Stored Procedure that rolls-back a series of operations. I want to call this from within another SP.

The problem is that the inner SP returns a record set with

相关标签:
4条回答
  • 2021-01-22 22:16

    A stored procedure returns a record set like any other, so you can actually do this:

    INSERT INTO MyTable ( MyValue )

    EXEC dbo.MyStoredProcedure

    The EXEC takes the place of a SELECT statement. To get the value, just SELECT from the table you inserted into. Typically, this would be a temp table.

    0 讨论(0)
  • 2021-01-22 22:17

    I tried Ant's approach and it worked a treat:

    Declare @Success tinyint
    Declare @Response Table (Success int)
    Insert into @Response(Success)
    Exec Fix_RollbackReturn 12345, 15
    Select @Success=Success from @Response
    

    As you can see I used a Table Variable rather than a temporary table because slightly more efficient than a temporary table.

    Thanks for all your help guys.

    EDIT: It appears that Dave was right after all. That is, my Exec-into-Table-variable approach worked on my SQL2005 development machine, but when moved to the Live (SQL2000) machine it objected, so I had to change to the temporary table approach.

    It's a little annoying, especially since in a couple of weeks we are upgrading to SQL2005 across the board(!).

    0 讨论(0)
  • 2021-01-22 22:19

    The other option is to convert the stored procedure that returns a recordset into a function that returns a table.

    Ant's approach is probably best if you want to minimize the changes to your system.

    Normally you would use a temporary table for that approach since you can't use an exec statement to insert into a table variable.

    0 讨论(0)
  • 2021-01-22 22:25

    Here's a variation which will work well if you need to use this for MULTIPLE recordsets.

    CREATE TABLE #outsidetable (...)
    exec spInsideProcedure
    SELECT * FROM #outsidetable
    

    inside spInsideProcedure

    INSERT INTO #outsidetable SELECT <blah blah blah>
    
    0 讨论(0)
提交回复
热议问题