张彭 2019-08-27 11:22 采纳率: 100%
浏览 587
已采纳

ORACLE存储过程遇到不合规数据跳过记录到日志然后继续插入合规数据

请大神写一个详细示例。要不然我看不懂,急急急
急。有没有 oracle前辈 花点时间,有偿有偿指导一下我。
请教一个存储过程问题
场景模拟:
我要插入一批数据
A
B
C
DDD
进入目标表,目标表只有一个字段CHAR(2)
现在有四条数据要插入进去,其中一条字符长度超长了。正常insert会存储过程报错,四条都插不进去,我想继续执行把其他三条正常插入到目标表,报错那一条记录的到日志

  • 写回答

5条回答 默认 最新

  • woshiafanfan 2019-08-27 12:21
    关注

    --创建测试数据表
    create table T_INSERT_DATA
    (
    val VARCHAR2(100)
    );
    --插入测试数据
    insert into t_insert_data values('A');
    insert into t_insert_data values('B');
    insert into t_insert_data values('C');
    insert into t_insert_data values('DDD');
    --创建需要插入数据的目标表
    create table T_INSERT
    (
    val VARCHAR2(1)
    );
    --创建问题数据日志表
    create table T_INSERT_LOG
    (
    val VARCHAR2(100)
    );
    --测试的PLSQL脚本
    declare
    v_val varchar2(100);
    begin
    for i in (select td.val from T_INSERT_DATA td) loop
    v_val := i.val;
    insert into t_insert (val) values (v_val);
    end loop;
    commit;
    exception
    when others then
    insert into t_insert_log (val) values (v_val);
    commit;
    end;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 关于加载卡的问题有能知道这个要怎么处理吗?
  • ¥100 rtmpose姿态评估
  • ¥15 java 通过反射找路径下的类,打包后就找不到
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。