使用嵌套存储过程结果调用存储过程Sql Server 2008

JD *_*art 6 sql sql-server stored-procedures sql-server-2008

是否可以在另一个存储过程中使用一个存储过程的结果?

CREATE PROCEDURE [dbo].[Proc1]
        @ID INT,
        @mfgID INT,
        @DealerID INT

AS
BEGIN

    DECLARE @Proc1Result UserDefinedTableVariable

    EXEC @Proc1Result = Proc2
        @SomeID = @ID,
        @SomeID2 = @mfgID,
        @SomeID3 = @DealerID

    -- Now I want to use the table returned by the stored procedure here.
    SELECT [col1],[col2] FROM @Proc1Result

END
Run Code Online (Sandbox Code Playgroud)

我尝试过使用INSERT INTO @Proc1Result EXEC Proc2 (with parameters passed),但INSERT EXEC无法在嵌套语句中调用.

有没有办法实现这个?环境是SQL Server 2008.

Abe*_*ler 10

您可以将存储过程嵌套到最多32个级别.

我建议阅读有关INSERT-EXEC的这篇文章.这是一个snippit:

如果some_sp尝试使用INSERT-EXEC调用some_other_sp,则会收到错误消息.因此,您一次只能激活一个INSERT-EXEC.这是SQL Server中的限制.


Rem*_*anu 5

你是对的,INSERT ... EXEC不能窝.从如何在存储过程之间共享数据.

它无法筑巢.如果some_sp尝试some_other_sp使用INSERT-EXEC 调用,则会收到错误消息.因此,您一次只能激活一个INSERT-EXEC.这是SQL Server中的限制.

你需要找到一些其他的方式.Erland的文章链接了几乎所有的选项,并详细讨论了它们.