【问题标题】:SQLPlus 's weird reaction during DML statements executionSQLPlus 在 DML 语句执行期间的奇怪反应
【发布时间】:2012-02-14 01:05:15
【问题描述】:

今天我在sqlplus,oracle 10.2中从sql文件执行DML语句,我发现了一些奇怪的东西,实际上是一个问题“Enter value for hamburger:”。见附件

问题“输入 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>
');

【问题讨论】:

  • 您的 SQL 语句是什么样的?你能告诉我们dmls.sql的内容吗?

标签: oracle10g sqlplus


【解决方案1】:

您的语句中肯定有一个&符号。

当 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 语句(带有&amp;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

【讨论】:

  • @AdamMusch:感谢您的建议。我改进了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多