SQL> create table C(CID varchar2(10),NID varchar2(10));
Table created
SQL> create unique index ind_c on c(cid);
Index created
SQL> set serveroutput on
SQL>DECLARE
I VARCHAR2(10) := '11111';
VI INT;
BEGIN
FOR VI IN 1 .. 3 LOOP
I := I || '1';
INSERT INTO C (CID, NID) VALUES (I, VI);
INSERT INTO C (CID, NID) VALUES (1, 1);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
ORA-00001: 违反唯一约束条件 (SCOTT.IND_C)
PL/SQL procedure successfully completed
SQL> SELECT * FROM c;
CID NID
---------- ----------
111111 1
1 1
1111111 2
此时插入了3条,插入第四条(1,1)时有唯一索引冲突,所以终止了程序。
修改一下这个过程(用上面贴的方法):
DECLARE
I VARCHAR2(10) := '11111';
VI INT;
BEGIN
FOR VI IN 1 .. 3 LOOP
I := I || '1';
INSERT INTO C (CID, NID) VALUES (I, VI);
BEGIN
INSERT INTO C (CID, NID) VALUES (1, 1);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
PL/SQL procedure successfully completed
SQL> select * from c;
CID NID
---------- ----------
111111 1
1 1
1111111 2
11111111 3
这时插入了四条。当插入(1,1)时产生了唯一索引冲突,但有了异常捕获(虽然是NULL),但可以继续插入后面的数据咯。
Table created
SQL> create unique index ind_c on c(cid);
Index created
SQL> set serveroutput on
SQL>DECLARE
I VARCHAR2(10) := '11111';
VI INT;
BEGIN
FOR VI IN 1 .. 3 LOOP
I := I || '1';
INSERT INTO C (CID, NID) VALUES (I, VI);
INSERT INTO C (CID, NID) VALUES (1, 1);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
ORA-00001: 违反唯一约束条件 (SCOTT.IND_C)
PL/SQL procedure successfully completed
SQL> SELECT * FROM c;
CID NID
---------- ----------
111111 1
1 1
1111111 2
此时插入了3条,插入第四条(1,1)时有唯一索引冲突,所以终止了程序。
修改一下这个过程(用上面贴的方法):
DECLARE
I VARCHAR2(10) := '11111';
VI INT;
BEGIN
FOR VI IN 1 .. 3 LOOP
I := I || '1';
INSERT INTO C (CID, NID) VALUES (I, VI);
BEGIN
INSERT INTO C (CID, NID) VALUES (1, 1);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
PL/SQL procedure successfully completed
SQL> select * from c;
CID NID
---------- ----------
111111 1
1 1
1111111 2
11111111 3
这时插入了四条。当插入(1,1)时产生了唯一索引冲突,但有了异常捕获(虽然是NULL),但可以继续插入后面的数据咯。