OUTPUT句を使用すると、おそらく新しく挿入されたレコードのIDを取得するのに最適な方法です。私はかなり私はストアドプロシージャを書くことができると呼ぶが、私のビジネスオブジェクトは動的に生成されたSQLを使用するので、ストアドプロシージャを使用することは問題になると思います。誰も私はどのように出力節で単一の入力ステートメントを実行し、返されたID値を取得するためにado.netを使用することができますか?それはちょうどこのようにすることが可能ではないように見えるが、私は尋ねると思った...ADO.NETでIDを取得するOUTPUT節の例?
編集:それは私が思ったよりも簡単だった...私はテーブルに出力する必要があると思った最初は変数。しかし、私が今やっているやり方は、新しいレコードを挿入する前にアイデンティティを戻しているので、まったくうまくいっていません。
INSERT Test (F1)
OUTPUT SCOPE_IDENTITY()
VALUES ('Testing')
私はこれを行うたびに、それが最後に挿入されたレコードのアイデンティティの値が実際にあるものより1つの数字が小さい結果を私に戻っています:ここで私はちょうどでテストしていた文です。結果に1を追加するだけですが、もちろんテーブル間を移動するときには機能しません。最後の結果は別のテーブルから取得されます。
私はIDENT_CURRENT( 'Test')を使用して1を追加する必要があるのでしょうか?それは1つのトランザクションとして処理され、並行性の問題について心配する必要はないからです。
正しい結果を得るための考え方はありますか?
@@ IDENTITYをストアドプロシージャの出力パラメータとして返す方法を尋ねていますが、挿入があると仮定していますか? – Candide
@Ingenu私の編集を参照してください –