Ik vergeet dit steeds en kom er weer op terug! Ik denk dat het beste antwoord een combinatie is van de tot nu toe gegeven antwoorden.
Ten eerste, &is de variabele prefix in sqlplus/sqldeveloper, vandaar het probleem - wanneer het verschijnt, wordt verwacht dat het deel uitmaakt van een variabelenaam.
SET DEFINE OFF stopt het interpreteren van sqlplus en op deze manier.
Maar wat als u sqlplus-variabelen en . moet gebruiken? letterlijk en karakters?
- Je hebt SET DEFINE ON nodig om variabelen te laten werken
- En STEL ESCAPE IN om te ontsnappen aan het gebruik van &.
bijv.
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Produceert:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Als u een ander escape-teken wilt gebruiken:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Wanneer u een specifiek escape-teken instelt, ziet u mogelijk 'SP2-0272:escape-teken mag niet alfanumeriek of witruimte zijn'. Dit betekent waarschijnlijk dat je het ontsnappingskarakter al hebt gedefinieerd en dat de dingen vreselijk naar jezelf verwijzen. De schone manier om dit probleem te vermijden, is door eerst de ontsnapping uit te schakelen:
set escape off
set escape '#'