sqlplus注释行号错误的问题

又一个和注释有关的问题。
sqlplus注释导致语句重复执行:https://yangtingkun.net/?p=1155
和上一个错误类似,不过这个问题可能会使得用户认为SQLPLUS出现异常。

SQL> SELECT 
2 1
3 FROM 
4 dual;
1
----------
         1
SQL> SELECT /*
2 abc
3 
SQL> select /*
2 abc
3 def
4 */
5 1 
6 FROM dual;
1
----------
         1

可以看到,对于正常的SQL语句,回车后自动会变成2、3依次类推的行号,而对于行中的注释也是相同的处理方式。
而且在默认的sqlblanklines为OFF的设置下,如果出现一个空行,就会直接导致SQL的结束,而不管十分处于注释之中。
下面看这个例子:

SQL> /* select
SQL> abc
SQL> * from dual;
SQL> 
SQL> 
SQL> 
SQL> select 1 from dual;
SQL> /
SQL> exit
SQL> l
SQL> exit
SQL> */
SQL> SELECT 1 FROM dual;
1
----------
         1

如果注释出现在行首,那么只要不出现注释终结符*/,那么其他所有的命令、空回车等等全部无视。如果不了解这个特性,会直接认为SQLPLUS已经挂掉了。

This entry was posted in ORACLE and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *