Как игнорировать амперсанды в SQL script из SQL Plus?

У меня есть SQL script, который создает пакет с комментарием, содержащим амперсанд (&). Когда я запускаю script из SQL Plus, мне предлагается ввести заменяющее значение для строки, начинающейся с &. Как отключить эту функцию, чтобы 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...

(_ является подстановочным знаком для одного символа)