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

Oracleのバインド変数を介して列名を参照することは可能ですか?

    いいえ。テーブル名または列名にバインド変数を使用することはできません。

    この情報は、実行プランを作成するために必要です。たとえば、何を注文するかがわからないと、使用するインデックスを特定することはできません。

    変数をバインドする代わりに、プログラムが列名を作成するときに、列名をSQLステートメントに直接補間する必要があります。 SQLインジェクションに対して予防策を講じていると仮定すると、それにはマイナス面はありません。

    更新: 本当にフープを飛び越えたいのなら、おそらく次のようなことをすることができます

    order by decode(?, 'colA', colA, 'colB', colB)
    

    しかし、それはばかげています。そして遅い。しないでください。



    1. 軽い購入アドベンチャー

    2. Access2019の仕組みと操作方法

    3. トランザクションでアップサート

    4. jdbcTimestampまたはDateを使用する場合のOracleとの無視できない実行プランの違い