【问题标题】:Coments at the end of line in SQLPlusSQLPlus 中行尾的注释
【发布时间】:2020-04-08 09:36:55
【问题描述】:

我检查了如果我在句尾的字符(;)之后写了一个评论,指令不会运行但也没有错误,就像所有的行都是评论一样。

例子:

Insert into MI_TABLA
   (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5)
 Values
   ( 311, 'TEST1', 'TEST1', 'TEST1', 1);

INSERT INTO MI_TABLA
   (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5)
VALUES
   ( 312, 'TEST2', 'TEST2', 'TEST2', 1);--Comment that ignore all the line

INSERT INTO MI_TABLA
   (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5)
VALUES
   ( 313, 'TEST3', 'TEST3', 'TEST3', 1);

COMMIT;

如果我在数据库上使用 SQLPlus 运行它,结果是只插入了 TEST1 和 TEST3,但没有插入 TEST2。但坏新是不显示任何错误,并且输出仅显示 2 次插入(有两条这样的消息:1 行已创建。仅此而已)。

你知道这是什么原因吗?有没有什么方法可以让 SQLPlus 不忽略这一行并且正常工作,或者至少它显示任何错误?

【问题讨论】:

  • stackoverflow.com/questions/18516132/oracle-sqlplus-comments 有一个类似的问题,但它没有给出该行为的原因
  • Quote from the manual "你只能包含“- -”样式的 cmets,如果它们自己在一行上" and further down "不要把 cmets 放在后面语句终止符(句点、分号或斜杠)。"
  • Illegal option 为什么不输出错误?
  • 我看到的另一个奇怪的事情是,如果句子不以“;”结尾但是空行后的下一句是对的,没有错误。你可以在这张图片上看到:Screenshot.

标签: sql oracle sqlplus


【解决方案1】:

分号 (;) 必须是语句的最后一个字符,否则 sql*plus 将无法识别它。 一个简单的解决方法是将分号放在注释之后,尽管我更愿意将分号放在单独的行上。

【讨论】:

  • 我提出了我的问题:Id it is an Illegal option, 为什么它不输出错误?
【解决方案2】:

经过大量测试和错误后,我终于找到了解决问题的方法。我希望它可以帮助任何有同样问题的人。

解决方案很简单:在脚本的第一行或 SQL 提示符处写下一行:

SET SQLBLANKLINES ON

当句子以分号后的注释结尾以及 no 以分号结尾时,我得到一个错误。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 2023-03-27
    • 2021-06-25
    • 2011-11-07
    • 2016-12-19
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多