У меня есть SQL script, который создает пакет с комментарием, содержащим амперсанд (&). Когда я запускаю script из SQL Plus, мне предлагается ввести заменяющее значение для строки, начинающейся с &. Как отключить эту функцию, чтобы SQL Plus игнорировал амперсанд?
Как игнорировать амперсанды в SQL script из SQL Plus?
Ответ 1
Это может сработать для вас:
set define off
В противном случае амперсанд должен находиться в конце строки,
'StackOverflow &' || ' you'
EDIT: я был счастлив при нажатии на сохранение... Это было указано в blog.
Ответ 2
Если вы иногда используете переменные замещения, вы можете не захотеть отключить определение. В этих случаях вы можете преобразовать амперсанд из его числового эквивалента, как в || Chr(38) ||
, или добавить его как один символ, как в || '&' ||
.
Ответ 3
Я решил с помощью кода ниже:
set escape on
и положите a\рядом и слева 'value_\&_intert'
Атр
Ответ 4
Вы можете установить специальный символ, который ищет при выполнении script, другому значению с помощью 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>
Ответ 5
set define off < - Это лучшее решение, которое я нашел
Я тоже пробовал...
set define}
Мне удалось вставить несколько записей, содержащих символы амперсандов '&' но я не могу использовать символ '}' в тексте Поэтому я решил использовать "set define off", и все работает так, как должно.
Ответ 6
В соответствии с этот хороший FAQ есть несколько решений.
Вы также можете избежать амперсанда с символом обратной косой черты \
, если вы можете изменить комментарий.
Ответ 7
У меня был оператор CASE с WHEN column = 'sometext & more text' THEN....
Я заменил его WHEN column = 'sometext' || CHR (38) || "больше текста" ТОГДА...
вы могли бы также использовать колонку WHEN LIKE 'sometext _ more text' THEN...
(_ является подстановочным знаком для одного символа)