0

これは、質問というよりも注意です。この状況に遭遇した場合に、多くの頭痛の種を避けることができるからです。

コマンドの BindByName プロパティを true に設定すると、マージ ステートメントで不可解な ORA-01036 エラーに直面しました。BindByName を false に設定すると、問題が悪化し、実際にはエラー メッセージが表示されずに誤った結果が返されます。

いくつかの調査の結果、クエリでキーパラメーターを繰り返すことはできず、insertのキー変数の using ステートメントでキー変数を使用する必要があることがわかりました。これは簡単な図です。

merge into rsvp r using (select :id as id from dual) d on (r.id=d.id)
 when matched then update set rsvp_date=sysdate
 when not matched then insert (id,rsvp_date) values (:id, sysdate)

これにより、エラーが発生します。修正は、最後の行の挿入ステートメントを次のように変更することです。

   when not matched then insert (id,rsvp_date) values (d.id, sysdate)
4

1 に答える 1

0

いくつかの調査の結果、クエリでキーパラメーターを繰り返すことはできず、insertのキー変数の using ステートメントでキー変数を使用する必要があることがわかりました。これは簡単な図です。

merge into rsvp r using (select :id as id from dual) d on (r.id=d.id)
 when matched then update set rsvp_date=sysdate
 when not matched then insert (id,rsvp_date) values (:id, sysdate)

これにより、エラーが発生します。修正は、最後の行の挿入ステートメントを次のように変更することです。

   when not matched then insert (id,rsvp_date) values (d.id, sysdate)
于 2016-05-05T12:56:49.703 に答える