如何在多个表中插入SP结果

Sub*_*dam 5 sql-server sql-server-2008-r2

我有一个 sp,结果是 3 套。现在的问题是我想将这 3 个结果集插入到 3 个临时表中。在这三个结果中,结构不同,列数也不同。

Swa*_*ate 1

考虑到您必须创建一个过程来处理三个结果集,以下是解决方案。但正如 Aaron Bertrand 在评论中建议的那样,如果可能的话,尝试对三个不同的结果集使用三个不同的过程。

如果由于复杂的逻辑或架构限制而不接受三个不同的 SP,那么

  1. 接受附加输入参数(例如可能值为 1、2、3 的整数)
  2. 如果输入参数传1,则返回结果时返回第一个结果集。如果输入参数为 2,则返回 2。
  3. 在主程序中,调用该程序三次。每次输入不同的参数号(即1、2、3)。

下面是示例

CREATE PROCEDURE dbo.sampleProc @ReturnType INT
AS
BEGIN
    -- Your logic here

    IF @ReturnType = 1
    BEGIN
         -- Return first result set
    END

    IF @ReturnType = 2
    BEGIN
         -- Return second result set
    END    

    IF @ReturnType = 3
    BEGIN
         -- Return third result set
    END
END
Run Code Online (Sandbox Code Playgroud)

编辑:还有一点。在为我们提供 if 逻辑时,您必须非常精确。由于相同的过程需要调用三次,因此可能会对性能产生影响,具体取决于您尝试实现的逻辑。如果可能,请使用相同的 if 块来合并特定返回场景的所有逻辑,并将通用部分保留在头部。