长话短说,我开始遇到 ORA-00001 主键违规,我追踪到这个问题,因为我的一些INSERT INTO
语句运行了两次。然后我发现有问题的命令之后有一个 C 风格的注释:
WHENEVER SQLERROR EXIT FAILURE
SET ECHO OFF
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET TIMING OFF
SET TIME OFF
SET TRIMSPOOL ON
SET TRIMOUT ON
SET LINESIZE 120
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
[...]
INSERT INTO INF_FIELD (FIELD_ID, CATEGORY_ID, COLUMN_EXPRESSION, DISPLAY_NAME, SORT_ORDER) VALUES (17, 1, 'FOO.NAME', 'Name of the foo', 17);
/*This is a comment*/
然后通过切换到以下语法很容易修复它:
--This is a comment
具体原因是什么/*...*/
注释使 SQL*Plus 运行该语句两次?
/* This is a comment */
只要确保后面有一个空格即可/*
,
因此它被视为单行/多行注释。并不意味着执行最后存储的 PL/SQL 或 SQL
说得详细一点。
SQL*Plus 之后解释什么/
被忽略并且它盲目地将其缓存的块推送到服务器中。除了/*
随后是一个new line
or space
.
SQL> SELECT * FROM DUAL;
D
-
X
SQL> /*t*/
D
-
X
SQL> /*
SQL> */
SQL> /
D
-
X
SQL> /*s
D
-
X
来自文档: http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_five.htm#i1210024
您必须在开始的斜杠星号 (/*) 后输入一个空格
评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)