plsql 过程中的异常处理以处理提供唯一约束的插入

Posted

技术标签:

【中文标题】plsql 过程中的异常处理以处理提供唯一约束的插入【英文标题】:exception handling in plsql procedure to handle insert giving unique constraint 【发布时间】:2017-07-07 05:27:04 【问题描述】:

我有一个有多个插入的 sql,但是当我运行它时,它为第一个插入提供了唯一的约束......并且 sql 正在跳过其他插入。你能帮我处理这种情况的异常处理吗?

【问题讨论】:

见***.com/questions/22175894/… (Oracle SQL) Catching a unique constraint error的可能重复 “一个 sql”是指 PL/SQL 过程还是多表插入语句? docs.oracle.com/database/121/SQLRF/statements_9015.htm#i2125362 【参考方案1】:

您需要使用异常处理程序将插入语句包装在 BEGIN/END 块中以捕获 DUP_VAL_ON_INDEX 异常。在那里你可以做任何你需要做的事情或忽略错误。

BEGIN
    -- first insert
    BEGIN
        Insert into myTab(ID,NAME) values (1,'name1');
    EXCEPTION 
        when DUP_VAL_ON_INDEX then
            null; -- do something or ignore the error
    END;

    -- second insert
    BEGIN
        Insert into myTab(ID,NAME) values (2,'name2');
    EXCEPTION 
        when DUP_VAL_ON_INDEX then
            null; -- do something or ignore the error
    END;
END;

【讨论】:

以上是关于plsql 过程中的异常处理以处理提供唯一约束的插入的主要内容,如果未能解决你的问题,请参考以下文章

数据库唯一性约束异常插入处理

有没有办法在 PLSQL 包中全局处理定义的异常

用于检索自定义消息而不是异常详细信息的 PLSQL 异常处理

处理因插入重复值而导致的唯一约束异常

ORA-02292: 违反完整约束条件 处理

处理异常PLSQL时的程序流程