2010-12-06 14 views
1

私はここで
cmdの背後にある私のコードでは、このが条件

IF NOT EXISTS (Select * from bom_steel where fpart = @fpart) 
     BEGIN 
      INSERT INTO bom_steel 
      VALUES (@fPart,@fL,@fH,@fW,@fDesc) 
     END 
    ELSE if(Select * from Employee where Empid = @empid) 
     BEGIN 
      Return ‘1’ 
     END 
Else 
Begin 
UPDATE bom_steel 
      SET [email protected], [email protected], [email protected] 
      where Empid [email protected] empid 
end 

when this condition passes , I am returning an value as 1 
ELSE if(Select * from Employee where Empid = @empid) 
     BEGIN // here i will to be doing any operation(DML) .so i want to just return an value as '1'     
       Return ‘1’ 
     END 

のようないくつかの条件でSPを持っている場合にストアドプロシージャからの戻り値を設定すると、この状態でここ

Int intcount= cmd.ExecuteNonQuery(); 

SqlCommandオブジェクト

です-1として常に値を戻します。

1'itは依然としてとして-1

値をreturingfされる」とさえ私はいずれかが、私はそこ

から1として値を返すために何をすべき私に言うことができる戻り値を設定しています

任意のヘルプは素晴らしいでしょう ありがとう

答えて

1

は影響を受けた行数を返します

Int intcount= cmd.ExecuteScalar(); 

代わりの

Int intcount= cmd.ExecuteNonQuery(); 

ExecuteNonQuery()をやってみてください。

また、下記のAndrewのように戻り値の一重引用符を削除するか、代わりにintCountの型をstringに変更してください。

1

intではなく、文字の値を返そうとしています。一重引用符を削除してみてください。

InSaneによると、 ExecuteNonQuery()は、影響を受ける行の数を返します。それがあなたの事例を不思議に思っています。なぜそれは-1を返しますか?

+0

+1:私にそれを打つ。 –

+0

@アードマン - これは、私が誰でも簡単なものに打ち勝つ時間です!私は午前中に殴られてきました。 hehe! –

+0

私は、プロシージャ内の "return 1"が、呼び出し側にその値を返すかどうかを知りたいと思っています。BOLは次のように言います。 "UPDATE、INSERT、およびDELETE文の場合、戻り値は他のすべてのタイプのステートメントの場合、戻り値は-1です。これは、たとえ "return"ステートメントであっても-1がクライアントに戻ることを意味すると思われる。 – Tony