PL/SQLとSQLでの名前解決ルールの相違点

PL/SQLとSQLの名前解決ルールはよく似ています。ただし、次のことに注意してください:

  • PL/SQLルールはSQLルールと比較して、より許容性が低くなっています。

    ほとんどのSQLルールが状況依存であるため、PL/SQLルールで認識されるよりも多くの状況が有効なものと認識されます。

  • PL/SQLとSQLでは、修飾名の解決方法が異なります。

    たとえば、HR.JOBSという表名を解決する場合は次のとおりです。

    • PL/SQLでは、まず現行スキーマでHRという名前のパッケージ、型、表およびビューが検索され、次にパブリック・シノニムが検索され、最後にHRスキーマでJOBSという名前のオブジェクトが検索されます。

    • SQLでは、まずHRスキーマでJOBSという名前のオブジェクトが検索され、次に現行スキーマでHRという名前のパッケージ、型、表およびビューが検索されます。

PL/SQLとSQLの名前解決ルールのわずかな相違点に起因する問題を回避するには、「SELECT文およびDML文の内部取得の回避」の推奨事項に従います。

ノート:

PL/SQLコンパイラで静的SQL文を処理する場合は、その文がSQLサブシステムに送信され、そこで文に含まれる名前がSQLルールを使用してSQLサブシステムによって解決されます。詳細は、「静的SQL文における名前解決」を参照してください。