这个问题很模糊,我猜测你的脚本的确切形式,所以我的回答试图为你提供一些选择,但并不精确。
你可以试试这样的:
WHENEVER SQLERROR EXIT FAILURE COMMIT
INSERT INTO t1 VALUES ( 'a', 'b', 'c');
INSERT INTO t1 VALUES ( 'a1', 'b1', 'c1');
.
.
这将导致脚本在第一个错误处停止,但使用 COMMIT 可以让您看到您已经走了多远(假设插入顺序中有一些逻辑顺序)。
这是磨练错误的一种快速而肮脏的方法。
第二种方法是散布提示以显示正在插入的值以帮助调试:
WHENEVER SQLERROR EXIT FAILURE ROLLBACK
PROMPT INSERTING a, b, c
INSERT INTO t1 VALUES ( 'a', 'b', 'c');
PROMPT INSERTING a1, b1, c1
INSERT INTO t1 VALUES ( 'a1', 'b1', 'c1');
.
.
另一个想法,涉及更多一点。假设您使用 EXCEL 生成 INSERT 语句,您可以将它们生成为对 pr_insert 过程的调用,然后在过程中使用逻辑来捕获和标记错误:
CREATE OR REPLACE PROCEDURE pr_insert
( p1 IN t1.c1%TYPE,
p2 IN t1.c2%TYPE,
p3 IN t1.c3%TYPE ) AS
BEGIN
INSERT INTO t1 VALUES ( p1, p2, p3 );
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR ( -20001, 'Error on : ' || p1 || ',' || p2 || 'p3 );
END ;
/
可以在 Excel 中生成以下 pr_insert 调用:
BEGIN
pr_insert ( 'a', 'b', 'c' );
pr_insert ( 'a1', 'b1', 'c1' );
pr_insert ( 'a2', 'b2', 'c2' );
.
.
END;
/