Il problema è che SQL*Plus tratta l'intera stringa dopo il &
, fino allo spazio bianco o simlar successivo, come nome della variabile di sostituzione. Chiaramente non è quello che vuoi qui.
Fortunatamente ci hanno pensato e puoi indicare la fine del nome della variabile con un .
:
FROM &3._TABLE
(Almeno, funziona per le variabili con nome, e sono quasi sicuro che lo farà per quelle posizionali... in caso contrario dovresti definire una nuova variabile impostata su &3
come soluzione alternativa).
Si trova nella la documentazione , ma sbatti le palpebre e ti mancherà:
C'è un effetto correlato che potresti voler tenere a mente per il futuro. Se il carattere successivo alla variabile di sostituzione è un .
comunque - tra lo schema e la tabella, o tra la tabella e la colonna, per esempio - allora verrà interpretato come terminatore di sostituzione. Supponi di passare lo schema separatamente come &4
, con valore 'scott'
; questo:
FROM &4.&3._TABLE
sembra ragionevole ma verrebbe sostituito come scottdev_TABLE
, che non verrà riconosciuto. Quindi in quel caso devi averne uno in più:
FROM &4..&3._TABLE
che verrebbe sostituito con scott.dev_TABLE
.