PL / SQL如果在表中找到类似的值,如何跳过脚本的执行?

时间:2016-02-02 03:00:26

标签: sql oracle plsql plsqldeveloper

我想创建一个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;

1 个答案:

答案 0 :(得分:1)

您的问题是不可理解的,因为您提供的代码在这种情况下不起作用。 在您的代码中,一旦您获得异常,您的整个过程将结束,其余的insert语句将在没有进程的情况下保留。

你应该在这里遵循一些步骤 - 1)在表格上创建PK或唯一键,以便您可以在某些基础上区分行。 2)插入任何值时,如果要插入的值已经存在于表中,请检查该列值,然后继续。

尝试使用上述步骤进行更改。如果您有任何问题,请分享。