テーブル名と列名をバインド変数として渡すことはできません。バインド変数の要点は、Oracleがステートメントに対してクエリプランを1回生成し、それをさまざまなバインド変数値で何度も実行できることです。オプティマイザは、アクセスされているテーブルや、選択およびフィルタリングされている列を認識していない場合、クエリプランを生成できません。
懸念がSQLインジェクション攻撃に関連していて、動的SQLが実際に必要であると想定している場合(ほとんどの場合、動的SQLに頼る必要があるということは、データモデルに問題があることを意味します)、DBMS_ASSERT
を使用できます。 テーブル名と列名に埋め込みSQLが含まれていないことを検証するパッケージ。