Ответ 1
По умолчанию SQL Plus обрабатывает "&" как специальный символ, начинающий строку замещения. Это может вызвать проблемы при запуске сценариев, которые включают '&' по другим причинам:
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
Enter value for spencers:
old 1: insert into customers (customer_name) values ('Marks & Spencers Ltd')
new 1: insert into customers (customer_name) values ('Marks Ltd')
1 row created.
SQL> select customer_name from customers;
CUSTOMER_NAME
------------------------------
Marks Ltd
Если вы знаете, что ваш сценарий содержит (или может включать) данные, содержащие символы '&', и вы не хотите использовать поведение подстановки, как описано выше, используйте set define off
чтобы отключить поведение во время выполнения сценария:
SQL> set define off
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
1 row created.
SQL> select customer_name from customers;
CUSTOMER_NAME
------------------------------
Marks & Spencers Ltd
Возможно, вы захотите добавить set define on
в конец скрипта, чтобы восстановить поведение по умолчанию.