我在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 */
然后,它将正确视为注释,并且不会导致语句的第二次调用。
你所看到的行为实际上是间接记录下来的:
必须在注释开头的斜杠星号 (/*) 后面输入一个空格。