0

元のテーブルとは異なる形式のデータを選択するストアド プロシージャがあります。

USE [VolTracker]
GO

DECLARE @return_value int,
        @offset int

SET @offset = 5

WHILE @offset >= 1 BEGIN
    EXEC    @return_value = [dbo].[sp_getStats]
            @Doffset = @offset,
            @StartTime = --Some Datetime,
            @EndTime = --Some later Datetime,
            @Contract = NULL

    SET @offset = @offset - 1
END

GO

この特定の例では、5 つのテーブルすべてを適切に選択します。ただし、これらのテーブルをすべて 1 つのテーブルに結合したいと考えています。どうすればこれを行うことができますか?

4

2 に答える 2

2

sp_getStats によって返される結果セットのスキーマと一致するテーブル変数を作成します。次に、ループ内でこの変数に挿入します。

...
declare @Stage table (YourColumn1 varchar(10), YourColumn2 int, ...);

WHILE @offset >= 1 BEGIN
    INSERT INTO @Stage
        EXEC    @return_value = [dbo].[sp_getStats]
                @Doffset = @offset,
                @StartTime = --Some Datetime,
                @EndTime = --Some later Datetime,
                @Contract = NULL

    SET @offset = @offset - 1
END

select * from @Stage;

上記は、返されたすべての結果セットの結合を返すように機能しますが、ループなしで完全なセットを返すことができる手順を変更する (または新しい手順を作成する) ことができる場合は、実行することをお勧めします。

于 2013-05-21T21:42:28.340 に答える