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

Oracle 11g:PL / SQLで、MERGE DMLステートメントの後に挿入および更新された行に関する情報を取得する方法はありますか?

    挿入カウントと更新カウントを別々に取得する組み込みの方法はありません。 SQL%ROWCOUNT おそらくすでにご存知のように、マージされた行の数がわかりますが、挿入と更新に別々の値を取得するのに相当するものはありません。

    AdrianBillingtonによるこの記事 は、マージに関数呼び出しを含めることで情報を取得する方法を示しています。これにより、少しオーバーヘッドが追加される可能性があります。

    OracleフォーラムのMichaelS からも、同様の、おそらくより単純なトリックがあります。 もちろん、私もまったく信用できません。ここで再現したいのですが、それが許可されているかどうかはわかりませんが、基本的にはsys_contextを使用しています。 エイドリアンのソリューションがパッケージ変数で行ったのとほぼ同じ方法で、カウントを維持します。きれいで、フォローやメンテナンスが簡単だと思うので、これを使用します。

    まだリンクのみの答えに危険なほど近づいていますが、他の人の仕事を盗用したくありません...



    1. php:$_POSTからのSQLインジェクションを防ぐ方法

    2. MySql-文字列の一部を更新する方法は?

    3. OracleのタイプをHibernateにマップします

    4. ora-06553pls-306「ogc_x」の呼び出しで引数の数またはタイプが間違っています