Intereting Posts
Как я могу узнать, не работает ли я в транзакции Oracle? Насколько сложно включить полнотекстовый поиск с SQL Server? SQLite и пользовательский порядок Возврат соответствующей даты из нескольких таблиц, включая дополнительную информацию о таблице почему запрос слишком длинный Ошибка локального запуска SQL LocalDb при вызове из Visual Studio 2013, но не SQL Server Management Studio Кто-нибудь может объяснить, что происходит в этом SQL-запросе? Очередь работы как таблица SQL с несколькими потребителями (PostgreSQL) Запрос критериев JPA во взаимосвязи «многие ко многим» с использованием оператора IN Оператор Mysql (синтаксическая ошибка при FULL JOIN) SQL / Doctrine: проблема с левым соединением выбор отдельного порядка значений по убыванию SQL Datawarehousing, нужна помощь в заполнении моего DIMENSION с помощью TSQL SELECT или лучшей альтернативы? Запросы, возвращающие несколько наборов результатов Функция поиска, SQL Server

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

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

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

set define off 

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

 'StackOverflow &' || ' you' 

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

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

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

 set escape on 

и положите a \ рядом с & в левом 'value_\&_intert'

Att

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

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