我想创建一个Oracle PL / SQL插入脚本。这只是一次插入语句,如果脚本多次执行,如果Table
中有类似值,则应跳过执行。
现在如果脚本再次执行,我希望它成功完成。但是,如果表中有类似的记录,我不想输入重复数据。
这是我的剧本:
Set SERVEROUTPUT ON
BEGIN
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Alex',
'Roark',
'25 El Camino Real',
'San Roman',
'CA',
'94008'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('William',
'Chan',
'3700 Baltimore Ave',
'Detroit',
'MI',
'21003'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Petty',
'Garg',
'1980 Fernando Ct',
'Austin',
'TX',
'85002'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Thomas',
'Gregory',
'56 E Washington Blvd',
'Philadelphia',
'PA',
'19803'
);
DBMS_OUTPUT.PUT_LINE('Insert Completed Successfully');
COMMIT;
EXCEPTION
WHEN dup_val_on_index
THEN ROLLBACK;
END;
/
Set serveroutput off;
答案 0 :(得分:1)
您的问题是不可理解的,因为您提供的代码在这种情况下不起作用。 在您的代码中,一旦您获得异常,您的整个过程将结束,其余的insert语句将在没有进程的情况下保留。
你应该在这里遵循一些步骤 - 1)在表格上创建PK或唯一键,以便您可以在某些基础上区分行。 2)插入任何值时,如果要插入的值已经存在于表中,请检查该列值,然后继续。
尝试使用上述步骤进行更改。如果您有任何问题,请分享。