У меня есть сценарий SQL, который создает пакет с комментарием, содержащим амперсанд (&). Когда я запускаю сценарий из SQL Plus, мне предлагается ввести замещающее значение для строки, начинающейся с &. Как отключить эту функцию, чтобы SQL Plus игнорировал амперсанд?
105
Если вы иногда используете подстановочные переменные, возможно, вы не захотите отключать определение. В этих случаях вы можете преобразовать амперсанд из его числового эквивалента, как в,
|| Chr(38) ||
или добавить его как один символ, как в|| '&' ||
.источник
Я решил с помощью кода ниже:
и поставьте \ рядом с & слева
'value_\&_intert'
Att
источник
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
но она выдавала ошибкуORA-01780: string literal required
.Вы можете установить для специального символа, который требуется при выполнении сценария, другое значение, используя
SET DEFINE <1_CHARACTER>
По умолчанию сама функция DEFINE включена, и для нее установлено значение &
Его можно отключить, как уже упоминалось, но его также можно избежать, установив другое значение. Внимательно относитесь к тому знаку, на который вы его поставили. В приведенном ниже примере я выбрал символ #, но этот выбор является лишь примером.
источник
set define off <- это лучшее решение, которое я нашел
Я тоже пробовал ...
установить определение}
Мне удалось вставить несколько записей, содержащих символы амперсанда «&», но я не могу использовать в тексте символ «}». Поэтому я решил использовать «set define off», и все работает как надо.
источник
Согласно этому красивому FAQ есть несколько решений.
Вы также можете экранировать амперсанд с помощью символа обратной косой черты,
\
если можете изменить комментарий.источник
set escape on
У меня был оператор CASE с WHEN column = 'sometext & more text' THEN ....
Я заменил его на WHEN column = 'sometext' || CHR (38) || 'больше текста' ТОГДА ...
вы также можете использовать КОГДА столбец LIKE 'sometext _ more text' THEN ...
(_ - это подстановочный знак для одного символа)
источник