在运行格式查询时遇到一些内部工具的问题:
SELECT
a,
b,
c /** This is an important column; please do not remove **/
FROM table;
错误消息表明注释中的分号被视为语句的结尾。这是Oracle或我们内部工具的限制吗?
答案 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';
产生错误。