Jeg bliver ved med at glemme dette og vender tilbage til det igen! Jeg tror, det bedste svar er en kombination af de svar, der er givet indtil videre.
For det første er &variabelpræfikset i sqlplus/sqldeveloper, deraf problemet - når det vises, forventes det at være en del af et variabelnavn.
SET DEFINE OFF stopper sqlplus-fortolkning og på denne måde.
Men hvad nu hvis du skal bruge sqlplus-variabler og bogstaveligt og tegn?
- Du skal SET DEFINE ON for at få variabler til at fungere
- Og INDSTIL ESCAPE TIL for at undgå brug af &.
f.eks.
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Producerer:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Hvis du vil bruge et andet escape-tegn:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Når du angiver et specifikt escape-tegn, kan du se 'SP2-0272:escape-tegn må ikke være alfanumerisk eller mellemrum'. Det betyder sandsynligvis, at du allerede har defineret flugtkarakteren, og tingene bliver forfærdeligt selvrefererende. Den rene måde at undgå dette problem på er at starte escape først:
set escape off
set escape '#'