Problém je v tom, že SQL*Plus zpracovává celý řetězec po &
, až po další mezeru nebo podobné, jako název substituční proměnné. Očividně to tady není to, co chcete.
Naštěstí na to mysleli a konec názvu proměnné můžete označit .
:
FROM &3._TABLE
(Aspoň to funguje pro pojmenované proměnné a jsem si téměř jistý, že to bude pro poziční... pokud ne, pak byste museli definovat novou proměnnou nastavenou na &3
jako řešení).
Je to v dokumentace , ale mrkni a bude ti to chybět:
Existuje související efekt, který možná budete chtít mít na paměti do budoucna. Pokud je další znak za substituční proměnnou .
každopádně - například mezi schématem a tabulkou nebo mezi tabulkou a sloupcem - pak to bude interpretováno jako substituční terminátor. Řekněme, že jste schéma předali samostatně jako &4
, s hodnotou 'scott'
; toto:
FROM &4.&3._TABLE
vypadá rozumně, ale byl by nahrazen jako scottdev_TABLE
, který nebude rozpoznán. V takovém případě tedy musíte mít jeden navíc:
FROM &4..&3._TABLE
který by byl nahrazen jako scott.dev_TABLE
.