Pořád na to zapomínám a vracím se k tomu znovu! Myslím, že nejlepší odpovědí je kombinace dosud poskytnutých odpovědí.
Za prvé, &je předpona proměnné v sqlplus/sqldeveloper, proto ten problém - když se objeví, očekává se, že bude součástí názvu proměnné.
SET DEFINE OFF zastaví interpretaci sqlplus tímto způsobem.
Ale co když potřebujete použít proměnné sqlplus and doslovné a znaky?
- Aby proměnné fungovaly, potřebujete SET DEFINE ON
- A NASTAVTE ESCAPE ZAPNUTO, aby se zabránilo použití &.
např.
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Vyrábí:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Pokud chcete použít jiný znak escape:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Když nastavíte konkrétní znak escape, může se zobrazit 'SP2-0272:znak escape nemůže být alfanumerický nebo prázdný znak'. Pravděpodobně to znamená, že už máte definovanou únikovou postavu a věci se děsně vztahují k sobě samému. Čistým způsobem, jak se tomuto problému vyhnout, je nejprve nastavit únik:
set escape off
set escape '#'