2

これはばかげた質問かもしれません、私はグーグルを試しましたが、おそらくこれを適切に表現していないので、ここで問題を説明しようとします:

SQL Server 2000を使用していて、3つのレコードを持つテーブルを反復処理し、各反復で別のストアドプロシージャ(SP2)を実行するストアドプロシージャ(SP1)があります。

SP2は挿入を実行してから、挿入されたレコードに対して選択を実行します。

SP1は反復後も続行し、1回の選択を行ってから終了します。

SP1を実行すると、最後に選択した結果セットのみが返されます。しかし、この反復では、4つの結果セット(反復ごとに1つ、最後にSP1が選択)がすべて返されます。

don't return the resultset of SP2SP1の一部としてそれらを反復しているときに言う方法はありますか?

SP2とまったく同じであるが、最後にselectがない、おそらくそれを処理する別のストアドプロシージャを作成できます。しかし、結果セットが返されないようにする何かをSP1に追加したいと思います。それは可能ですか?

現在のSP1のイテレーションは次のようになります。

set nocount on
declare c cursor for select room_id from st_room_ref where active = 1
declare @room_id int,
        @max_c int

open c

while 1 = 1
begin
    fetch c into @room_id
    if @@fetch_status <> 0 break

    select  @max_c = max(call_id) 
    from    st_call 
    where   room_id = @room_id 

    if      @max_c is null
    exec    st_getCall @room_id
end

close c
deallocate c

カーソルの間違いについての論文はご遠慮ください。st_getCall結果セットを返送しないようにSPに指示する何らかの方法を望んでいました。

4

1 に答える 1

1

次のことを試しましたか?

INSERT INTO
  @itteration_results
EXEC
  st_getCall @room_id

これには制限があります。これ以上深くネストすることはできません。st_getCallその中に同じものを持つことはできません。

あなたがそれを必要とすることになった場合、あなたはこの質問への受け入れられた答えからより多くのマイレージを得るかもしれません:

于 2012-06-21T09:32:06.313 に答える