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.
你是对的,INSERT ... EXEC不能窝.从如何在存储过程之间共享数据.
它无法筑巢.如果
some_sp尝试some_other_sp使用INSERT-EXEC 调用,则会收到错误消息.因此,您一次只能激活一个INSERT-EXEC.这是SQL Server中的限制.
你需要找到一些其他的方式.Erland的文章链接了几乎所有的选项,并详细讨论了它们.