总而言之,我开始收到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运行语句两次的确切原因是什么?
答案 0 :(得分:4)
/* This is a comment */
请确保在/*
之后有空格,
因此它被视为单行/多行注释。并不意味着执行最后存储的PL / SQL或SQL
详细说明。
忽略{* 1}}之后SQL * Plus解释的内容,并盲目地将其缓存到服务器中。除了/
后跟/*
或new line
。
space
您必须在斜杠(/ *)开头后输入一个空格 评价。