コードが以下に示すように、データベーステーブル(oracle 11)に行を挿入し、挿入された行の文字列値を返します。
using (OracleCommand cmd = con.CreateCommand()) {
cmd.CommandText = "insert into foo values('foo','bar') returning idString into :lastIdParam";
cmd.Parameters.Add(new OracleParameter("lastIdParam", OracleDbType.Varchar2), ParameterDirection.ReturnValue);
cmd.ExecuteNonQuery(); // returning 1 (insert row successfully)
var result = cmd.Parameters["lastIdParam"].Value.ToString(); // == String.Empty
}
デバッグすると、lastIdParam.Valueの値= Empty.String:
私の問題は、return文字列をreturn-parameterに取得していないことですが、整数値(挿入されたIDのシーケンス番号など)を返す場合は機能します。キャストの問題?...?
ステートメントを直接実行する場合(または、次のようなことを行う場合)、idStringが入力されます。returning 'ABC' into :myOutputParameter
行を挿入した後に文字列を取得する方法はありますか?