Jag fortsätter att glömma detta och kommer tillbaka till det igen! Jag tror att det bästa svaret är en kombination av de svar som givits hittills.
För det första är &variabelprefixet i sqlplus/sqldeveloper, därav problemet - när det dyker upp förväntas det vara en del av ett variabelnamn.
SET DEFINE OFF kommer att stoppa sqlplus-tolkningen och på detta sätt.
Men vad händer om du behöver använda sqlplus-variabler och bokstavliga och karaktärer?
- Du måste SET DEFINE ON för att få variabler att fungera
- Och STÄLL PÅ ESCAPE för att undvika användning av &.
t.ex.
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Producerar:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Om du vill använda ett annat escape-tecken:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
När du ställer in ett specifikt escape-tecken kan du se "SP2-0272:escape-tecken kan inte vara alfanumeriskt eller blanksteg". Detta betyder förmodligen att du redan har definierat flyktkaraktären och saker blir fruktansvärt självreferenserande. Det rena sättet att undvika detta problem är att sätta igång escape först:
set escape off
set escape '#'