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文における名前解決」を参照してください。