Странная реакция SQLPlus во время выполнения операторов DML - PullRequest
0 голосов
/ 19 января 2012

Сегодня я выполнял операторы DML из файла sql в sqlplus, oracle 10.2, я обнаружил нечто странное, что на самом деле является вопросом " Введите значение для гамбургера: ". Смотри в приложении image

и окончание вопроса «Введите значение для ХХХ» продолжало меняться с интервалами. я имею в виду, что через несколько секунд я нашел утверждение "Введите значение для McDonald" ....

Я хочу знать, нормально ли это с sqlplus ????

Я попытался выполнить инструкцию DML, указав расположение файла sql в sqlplus.

SQL> @ / TMP / Mydir / dmls.sql;

Примерное утверждение из файла sql:

Insert into MYSCHEMA.MYTABLE (ID,DIX_DIR_ID,DIX_AGL,DIX_XML_INLINE) values (23202,1100080319000620471,'directory','<values>
 <dir_class_title>Person</dir_class_title>
</values>
');

1 Ответ

2 голосов
/ 19 января 2012

В вашем утверждении наверняка есть амперсанд.

Когда SQL * Plus встречает амперсанд, он пытается заменить его тем, для чего он определен.Если он не определен, он запрашивает значение:

Это статут без амперсанда:

SQL> select 'foo' from dual;
'FO
---
foo

Теперь еще один оператор с амперсандом.Значение для foo (еще) не определено, поэтому оно запрашивает одно:

SQL> select '&foo' from dual;
Enter value for foo: bla
old   1: select '&foo' from dual
new   1: select 'bla' from dual

'BL
---
bla

Теперь foo определено как бар :

SQL> define foo=bar

Оператор выбора (с &foo) возвращает бар :

SQL> select '&foo' from dual;
old   1: select '&foo' from dual
new   1: select 'bar' from dual

'BA
---
bar

См. Также DEFINE и Определение переменных подстановки

Если вы хотите отключить это поведение, сделайте как

SQL> set define off

Редактировать : изменено set define= на set define off согласно предложению Адама Муша.

...