Het probleem is dat SQL*Plus de hele string behandelt na de &
, tot de volgende spatie of vergelijkbaar, als de naam van de vervangingsvariabele. Dat is duidelijk niet wat je hier wilt.
Gelukkig hebben ze hieraan gedacht, en je kunt het einde van de variabelenaam aangeven met een .
:
FROM &3._TABLE
(Dat werkt tenminste voor benoemde variabelen, en ik ben er bijna zeker van dat het ook voor positionele variabelen zal zijn... zo niet, dan zou je een nieuwe variabele moeten definiëren die is ingesteld op &3
als een tijdelijke oplossing).
Het staat in de documentatie , maar knipper en je zult het missen:
Er is een gerelateerd effect dat u misschien in gedachten wilt houden voor de toekomst. Als het volgende teken na de vervangingsvariabele een .
hoe dan ook - tussen het schema en de tabel, of bijvoorbeeld tussen de tabel en de kolom - dan wordt dat geïnterpreteerd als de substitutieterminator. Stel dat u het schema afzonderlijk doorgeeft als &4
, met waarde 'scott'
; dit:
FROM &4.&3._TABLE
ziet er redelijk uit, maar zou worden vervangen door scottdev_TABLE
, die niet zal worden herkend. Dus in dat geval heb je een extra nodig:
FROM &4..&3._TABLE
die zou worden vervangen door scott.dev_TABLE
.