外壳脚本(单个查询执行两次)



我在Linux环境中编写了一个.sql脚本,我在SQL*Plus中执行它,但是其中的单个查询被执行了两次。

脚本:

cat s2.sql
/* Global Name of DB */
 select * from global_name;
/*Database Status */
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

输出:

SQL> @ s2.sql
GLOBAL_NAME
--------------------------------------------------------------------------------
xyz

GLOBAL_NAME
--------------------------------------------------------------------------------
xyz

INSTANCE_NAME    STATUS       DATABASE_STATUS
---------------- ------------ -----------------
xyz           OPEN         ACTIVE

我尝试了扩展.sql和.txt,尽管我得到了相同的结果。

为什么要这样做,我该如何阻止它?

问题是第二条评论。该行:

/*Database Status */

被解释为缓冲区提交/,而不是注释。如果添加空格以匹配另一个空格:

/* Database Status */

然后,它将正确视为注释,并且不会导致语句的第二次调用。

你所看到的行为实际上是间接记录下来的:

必须在注释开头的斜杠星号 (/*) 后面输入一个空格。

最新更新