Проблемът е, че SQL*Plus третира целия низ след &
, до следващото празно пространство или подобно, като име на променлива за заместване. Очевидно не това е, което искате тук.
За щастие те са се сетили за това и можете да обозначите края на името на променливата с .
:
FROM &3._TABLE
(Поне това работи за именувани променливи и съм почти сигурен, че ще работи за позиционни... ако не, тогава ще трябва да дефинирате нова променлива, зададена на &3
като заобиколно решение).
Той е в документацията , но мигнете и ще го пропуснете:
Има свързан ефект, който може да искате да имате предвид за в бъдеще. Ако следващият знак след променливата за заместване е .код> така или иначе - между схемата и таблицата, или между таблицата и колоната, например - тогава това ще се интерпретира като терминатор на заместване. Да кажем, че подавате схемата отделно като
&4
, със стойност 'scott'
; това:
FROM &4.&3._TABLE
изглежда разумно, но ще бъде заменено с scottdev_TABLE
, което няма да бъде разпознато. Така че в този случай трябва да имате допълнителен:
FROM &4..&3._TABLE
което ще бъде заменено като scott.dev_TABLE
.