2012-02-09 13 views
1

条件が存在する場合、データベース内のレコードを更新したいとします。executeNonQuery()を使用するときにsqlから目的の値を返す方法

set nocount off; 

if exists (select * from ParentTable where [email protected]) 
    update ChildTable set [email protected],[email protected] where [email protected]; 
else return -2; 

ただし、ParentIDが存在しない場合は-1を返します。

私はExecuteNonQueryの戻り値が影響を受けた行数、ないカスタムリターンコードで、この手順を実行するために

+0

を使用すると、出力変数を使用してみましたが? – aggietech

答えて

4

をのExecuteNonQuery()を使用しています。 -1(現在の戻り値)は、この特定のケースでは、適切な代替のように見えますが、あなたはExecuteScalarを使用して、下のパターンを使用する必要がありますより一般的なケースを解決するために:

declare @retval int 

if exists (select * from ParentTable where [email protected]) 
begin 
    update ChildTable set [email protected],[email protected] where [email protected]; 
    select @retval = @@ROWCOUNT 
end 
else 
    select @retval = -1 

select @retval 
関連する問題