在Oracle SQL中,我可以在注释中使用分号吗?

时间:2016-08-24 18:43:17

标签: sql oracle

在运行格式查询时遇到一些内部工具的问题:

SELECT 
a,
b,
c /** This is an important column; please do not remove **/
FROM table;

错误消息表明注释中的分号被视为语句的结尾。这是Oracle或我们内部工具的限制吗?

1 个答案:

答案 0 :(得分:0)

SQL、PLSQL 和 SQL*Plus 有细微的差别。对于 ;,SQL*Plus 不会忽略注释中的 ;,请参阅以下内容:

https://svenweller.wordpress.com/2020/08/25/warning-hidden-traps-comments-in-sqlplus/

上面给出了这个例子。

select 'drop '||object_type||';' 
  from user_objects 
  --where object_type = 'VIEW';
  where object_type = 'TRIGGER';

出现这个似是而非的例子是因为程序员复制了 where 行,注释掉了原来的行,然后用 VIEW 替换了 TRIGGER。在 SQL*Plus 中,--where object_type = 'VIEW' 被忽略,但 ; 不是。因此,SQL*Plus 执行的内容如下:

select 'drop '||object_type||';' 
  from user_objects

余数 where object_type = 'TRIGGER'; 产生错误。