сохраненный prcoedure дает несколько наборов результатов вместо одного набора результатов на сервере SQL - PullRequest
0 голосов
/ 18 сентября 2018

Я использую SQL Server, а запросы использую SQL Server 2014 Management Studio.

Я вызываю хранимую процедуру в одном из моих подключений к базе данных, которая дает несколько наборов результатов.

Под «результирующими наборами» я подразумеваю, что он дает несколько выходных данных, например, как мы получаем два результирующих набора, если мы запрашиваем два оператора выбора. Количество строк в выводе не имеет значения.

Это проблема, потому что, если я запрашиваю его в другом подключении к БД, он дает только один ожидаемый набор результатов. Я ожидаю каких-либо настроек БД для хранимой процедуры или чего-то подобного.

P.S. Моя процедура использует UNION ALL, сохраняет все во временной таблице и затем выводит эту временную таблицу.

Вот моя процедура:

CREATE PROCEDURE [dbo].[PROC] 
(
    @effDate DATE,
    @EffWeekDate DATE
) WITH recompile 
AS 
BEGIN 

    SET TRANSACTION isolation level READ uncommitted 

    EXEC pos..sp_nms_check_frag 
      @table_name = 'abc', 
      @execute_command = 1, 
      @include_investigation = 0, 
      @include_indexes = 0, 
      @include_statistics = 1; 

    EXEC pos..sp_nms_check_frag 
      @table_name = 'def', 
      @execute_command = 1, 
      @include_investigation = 0, 
      @include_indexes = 0, 
      @include_statistics = 1; 

    EXEC los..sp_nms_check_frag 
      @table_name = 'xyz', 
      @execute_command = 1, 
      @include_investigation = 0, 
      @include_indexes = 0, 
      @include_statistics = 1; 

    EXEC los..sp_nms_check_frag 
      @table_name = 'pqr', 
      @execute_command = 1, 
      @include_investigation = 0, 
      @include_indexes = 0, 
      @include_statistics = 1; ; 

    WITH tmp_hierachy 
    ( 
        column1, 
        column2, 
        column2_parent, 
        column3, 
        column4, 
        column5, 
        column6 
    ) 
    AS 
    ( 
        SELECT column2 'column1', 
        column2, 
        column2_parent, 
        a.column3, 
        a.column4, 
        a.column4 AS column5, 
        a.column6 
        FROM pos..abc A 
        WHERE a.rds_eff_dt = @effDate 
        AND a.column2 IN 
        ( 

            SELECT column2 
            FROM   los..xyz 
            WHERE  @EffWeekDate BETWEEN rds_start_dt AND    rds_end_dt 

            UNION ALL 

            SELECT column2 
            FROM   los..pqr 
            WHERE  @effDate BETWEEN rds_start_dt AND    rds_end_dt
        ) 
        AND    a.column2 != a.column2_parent 

        UNION ALL 

        SELECT tmp.column1, 
        a.column2, 
        a.column2_parent, 
        a.column3, 
        a.column4, 
        tmp.column5 - 1, 
        a.column6 
        FROM       pos..abc A 
        INNER JOIN tmp_hierachy tmp 
        ON         a.rds_eff_dt = @effDate 
        AND        a.column3 = tmp.column3 
        AND        tmp.column2_parent = a.column2 
        AND        tmp.column5 >= 0 

    ) 

    SELECT * 
    INTO   #tmp_hierachy 
    FROM   tmp_hierachy 

    SELECT a.column3, 
    a.column1, 
    a.column2, 
    column2_parent, 
    column4, 
    column5 AS column5, 
    column6, 
    b.column7, 
    b.column8, 
    b.column9 
    FROM       #tmp_hierachy A 
    INNER JOIN pos..def B 
    ON         a.column2 = b.column2 
    AND        b.rds_eff_dt = @effDate 
    AND        EXISTS 
    ( 
        SELECT 1 
        FROM   
        ( 
            SELECT column2, 
            column3, 
            Max(column5) AS max_level 
            FROM #tmp_hierachy 
            GROUP BY column2, 
            column3
        ) AS grp_node 
        WHERE  grp_node.column2 = a.column2 
        AND    grp_node.column3 = a.column3 
        AND    grp_node.max_level = column5
    ) 
    ORDER BY column1, 
    column3, 
    column4, 
    column2_parent, 
    column2 OPTION (recompile)

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...