問題は、SQL * Plusが&
の後に文字列全体を処理していることです。 、置換変数名として、次の空白または類似文字まで。明らかに、それはあなたがここで望んでいることではありません。
幸い、彼らはこれを考えており、変数名の終わりを.
:
FROM &3._TABLE
(少なくとも、これは名前付き変数で機能します。位置変数でも機能するとほぼ確信しています...そうでない場合は、&3
に設定された新しい変数を定義する必要があります。 回避策として)。
ドキュメント にあります。 、しかし点滅すると見逃します:
あなたが将来のために心に留めておきたいかもしれない関連した効果があります。置換変数の次の文字が.
の場合 とにかく(たとえば、スキーマとテーブルの間、またはテーブルと列の間)、それは置換ターミネータとして解釈されます。スキーマを&4
として個別に渡したとします。 、値'scott'
;これ:
FROM &4.&3._TABLE
妥当に見えますが、scottdev_TABLE
として置き換えられます 、認識されません。したがって、その場合は、追加のものが必要です:
FROM &4..&3._TABLE
これはscott.dev_TABLE
として置き換えられます 。