2012-01-20 21 views
0

scope_idを生成する必要があるストアドプロシージャを実行していますが、多くの結果セットが返されています。ストアドプロシージャの結果をクリア/リセットする方法

このコード:

INSERT INTO .. 
    SELECT @AddedID = SCOPE_INDENTITY() 
    EXEC NewSP --Returns a Scope_Identity also 

私は(結果をクリアして、新鮮な開始)これを実現するにはどうすればよい:

INSERT INTO.. 
    SELECT @AddedID = SCOPE_INDENTITY() 
    EXEC NewSP --Returns a Scope_Identity also 

    CLEAR_ALL_RESULTS -- Need to be able to clear all the results here 

    SELECT @AddedID as AddedID --Only return this results now after clearing all prior 
+0

カント」出力パラメータを使用して動作しますか? – gsharp

+0

私は、アプリケーションでspを実行すると、@ AddIDの代わりに "NewSP"からscope_idを返します。私はこのSPを対象にして、NewSP Scope_idの代わりにAddedIDを返す方法がわかりません。 –

+1

@ZeeTee - The '@@ IDENTITY'ではなく' SCOPE_IDENTITY'を使うことの利点は、子スコープによって変更されないことです。ストアドプロシージャが破棄したい結果セットを返すと言っていますか?もしそうなら、そのストアドプロシージャ定義を変更できますか? –

答えて

0

たぶん、 "出力" を使用することは良いアイデアです:)(msdn

create table #ttable 
(
    id int primary key identity, 
    someText nvarchar(20) 
) 
Go 
Insert Into #ttable (someText) 
Output inserted.id 
Values ('Some text'); 
0

あなたは常にoutput parameterを使用することができます。

+0

[単なるリンクで回答しないでください](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) – mellamokb

関連する問題