我在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进行尝试。
为什么这样做,我该如何阻止呢?
答案 0 :(得分:2)
问题是第二条评论。该行:
/*Database Status */
被解释为a buffer-submitting /
,完全不是注释。如果您添加一个空格以匹配另一个空格:
/* Database Status */
那么它将被正确地视为注释,并且不会导致语句的第二次调用。
您看到的行为实际上是documented,有点-间接地:
您必须在斜杠星号(/ *)后面输入一个空格。