RETURN VALUE(RETURN({number})構文を使用してSQLによって返される)をキャプチャするには、次を使用します。
cmdHeader.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;
また、おそらく SCOPE_IDENTITY() を使用する必要があります。 @@IDENTITYの代わりに
編集:
つまり、sprocは次のようになります:
DECLARE @NewId INTEGER
INSERT SomeTable(FieldA) VALUES ('Something')
SELECT @NewId = SCOPE_IDENTITY()
RETURN (@NewId)
そして、その値を取得するためのC#コードは次のようになります:
int newId = cmdHeader.Parameters[@ReturnValue].value;
編集2:
わかりました。「戻り値」は、単一の列の結果セットを返すという実際に行っていることとは異なるため、元の質問で問題が混乱しました。
したがって、代わりにしないでください ReturnValueパラメータを追加します。 ExecuteScalar() を使用するだけです。 以下のように元のSqlCommand設定を使用します:
int newId = Convert.ToInt32(cmdHeader.ExecuteScalar());