今天我在sqlplus,oracle 10.2中从sql文件执行DML语句,我发现了一些奇怪的东西,实际上是一个问题“为汉堡包输入值”。请参阅附件
和问题的结尾“为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>
');
答案 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
另请参阅DEFINE和Defining Substitution Variables
如果您想关闭此行为,请执行
SQL> set define off
修改:根据Adam Musch的建议将set define=
更改为set define off
。