Problemet er, at SQL*Plus behandler hele strengen efter &
, op til det næste mellemrum eller simlar, som substitutionsvariabelnavnet. Det er tydeligvis ikke det, du ønsker her.
Heldigvis har de tænkt på dette, og du kan angive slutningen af variabelnavnet med en .
:
FROM &3._TABLE
(Det virker i hvert fald for navngivne variabler, og jeg er næsten sikker på, at det vil gøre det for positionelle... hvis ikke, så skal du definere en ny variabel indstillet til &3
som en løsning).
Det er i dokumentationen , men blink og du vil savne det:
Der er en relateret effekt, som du måske ønsker at huske på for fremtiden. Hvis det næste tegn efter substitutionsvariablen er en .
alligevel - mellem skemaet og tabellen, eller mellem tabel og kolonne, for eksempel - så vil det blive fortolket som substitutionsterminatoren. Lad os sige, at du sendte skemaet separat som &4
, med værdien 'scott'
; dette:
FROM &4.&3._TABLE
ser rimeligt ud, men ville blive erstattet som scottdev_TABLE
, som ikke vil blive genkendt. Så i det tilfælde skal du have en ekstra:
FROM &4..&3._TABLE
som ville blive erstattet som scott.dev_TABLE
.