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



У меня есть SQL скрипт, который создает пакет с комментарием, содержащие амперсанд (&). Когда я запускаю скрипт из SQL Plus, мне предлагается ввести заменяющее значение для строки, начинающейся с &. Как отключить эту функцию, чтобы SQL Plus игнорировал амперсанд?

785   7  

7 ответов:

Это может работать для вас:

set define off

в противном случае амперсанд должен быть в конце строки

'StackOverflow &' || ' you'

EDIT:я был счастлив при сохранении... Это было указано из блог.

Если вы иногда использовать замену переменных, которые вы, возможно, не хотите свою очередь, определяют выкл. В этих случаях вы можете преобразовать амперсанд из его числового эквивалента, как в || Chr(38) || или добавить его как один символ, так как в || '&' ||.

Я решил с помощью кода ниже:

set escape on

и поставить \ у и в левой 'value_\&_intert'

Att

вы можете установить специальный символ, который ищется при выполнении скрипта, в другое значение с помощью 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>

set define off

Я тоже пробовал...

set define }

мне удалось вставить несколько записей, содержащих символы амперсанда'&', но я не могу использовать символ '}' в текст Поэтому я решил использовать "set define off", и все работает так, как должно.

по данным это хороший FAQ есть несколько решений.

вы также можете избежать амперсанда с обратной косой чертой\ Если вы можете изменить комментарий.

У меня был оператор CASE с WHEN column = 'sometext & more text' тогда ....

Я заменил его Когда столбец = 'sometext' | | CHR(38) / / 'больше текста' тогда ...

вы также можете использовать Когда столбец, как "sometext _ больше текста", то ...

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

Comments

    Ничего не найдено.