SQLPlus在DML语句执行期间的奇怪反应

时间:2012-01-19 11:01:04

标签: oracle10g sqlplus

今天我在sqlplus,oracle 10.2中从sql文件执行DML语句,我发现了一些奇怪的东西,实际上是一个问题“为汉堡包输入值”。请参阅附件image

和问题的结尾“为XXX输入值”保持间隔更改。我的意思是几秒钟后我发现声明“为麦当劳输入价值”....

我想知道sqlplus ????

是否正常

我试图通过在sqlplus中给出sql文件的位置来执行DML语句。

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 个答案:

答案 0 :(得分:2)

你的陈述中肯定有一个&符号。

当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被定义为 bar

SQL> define foo=bar

select语句(带&foo)返回 bar

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

'BA
---
bar

另请参阅DEFINEDefining Substitution Variables

如果您想关闭此行为,请执行

SQL> set define off

修改:根据Adam Musch的建议将set define=更改为set define off