Відповіді:
Це може допомогти вам:
set define off
Інакше амперсанд повинен бути в кінці рядка,
'StackOverflow &' || ' you'
EDIT: Я був щасливий за натискання під час збереження ... Про це посилалось у блозі .
Якщо ви іноді використовуєте змінні заміни, можливо, ви не хочете вимикати визначення. У цих випадках ви можете перетворити амперсанд з його числового еквівалента як у || Chr(38) ||
або додати його як єдиний символ як у || '&' ||
.
Я вирішив за допомогою наведеного нижче коду:
set escape on
і поставте \ біля & зліва 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
але це давала мені помилку ORA-01780: string literal required
.
Ви можете встановити спеціальний символ, який шукається при виконанні сценарію, на інше значення за допомогою використання SET DEFINE <1_CHARACTER>
За замовчуванням сама функція DEFINE увімкнена, і вона встановлена в &
Його можна вимкнути - як вже було сказано - але його можна уникнути і шляхом встановлення іншого значення. Будьте в курсі того, який знак ви встановили. У наведеному нижче прикладі я вибрав символ #, але цей вибір є лише прикладом.
SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value
'AVALUE#VAR_HASH'
-----------------
a value #var_hash
SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value
'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value
SQL>
Відповідно до цього приємного FAQ , є пара рішень.
Ви можете також уникнути амперсанда з символом зворотної косої риси, \
якщо зможете змінити коментар.
set escape on
У мене був випадок CASE, коли КОЛЕНО = "деякий текст і більше тексту", а потім ....
Я замінив його КОЛИЙ стовпець = 'деякий текст' || CHR (38) || 'Більше тексту' ТАКОЖ ...
ви також можете використати КОЛИ стовпець ПОДОБАЄТЕ 'деякий текст _ більше тексту', а потім ...
(_ - це підстановка для одного символу)