sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャからC#asp.netで戻り値を取得する(構文の問題)

    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());
    


    1. OracleとSQLサーバーを使用したページングと一般的なページング方法

    2. 2Oracleの日時値から秒を返す関数

    3. テーブルが存在する場合は行を削除しますSQL

    4. サーバーを再起動せずに.env変数をリロードする(Laravel 5、共有ホスティング)