SQLストアドプロシージャで行を挿入していて、新しい行のIDENTITY INTを返すことを望むなら、C#コードで取得します。CでSQL INSERT OUTPUT値を取得する
ALTER PROCEDURE the_proc @val_2 VARCHAR(10), @val_3 VARCHAR(10)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO the_table (field_2, field_3)
OUTPUT INSERTED.field_1
VALUES (@val_2, @val_3)
END
C#では、私はLINQを使用していますが、OUTPUT値を取得する方法についてはあいまいです。私はそれをSQL proc宣言のOUTPUTパラメータとしてインクルードしようとしましたが、どちらも動作できませんでした。一番近いのは、IExecuteResult result
ReturnValueに0(正しくない)が含まれていますが、含まれている結果ビュー(result.ReturnValue Results View
)が出力値を持っているかどうかを調べるDb.designer.csコードがあります。
key = (int)(db.TheProc(val2,val3).ReturnValue);
key
は私がINSERTからIDENTITYのINT値を望ん0として戻って来ています。
プロシージャを手作業で実行して、本当にID intを返すようにしましたか? INSERTED.field_1の代わりに@@ Identityを使用する必要があります。 – StriplingWarrior
@StriplingWarrior - OPの手順は正常に動作します。彼のアプローチは、挿入トリガがテーブルに追加された場合に正しく動作するので、 '@@ identity 'を選択するとより頑強です。 –
@ StriplingWarrior - 私が言及したように、VSデバッガの結果を調べるとき、IDENTITY INTはそこにありますが(ReturnValueにはありません)。それで何とか返されます。私が求めているのは、その値を取得するためのC#/ Linqイディオムです。ありがとう。 –