Oracle报错:ORA-01830:日期格式图片在转换整个输入字符串之前结束

最近在用Oracle写存储过程的过程中,报了如下的错误。在网上查了资料,说是错误应该是在使用to_date()这个函数时发生的。而自己的存储过程确实也使用了这个函数。但是还是不知道具体的原因。在BI同事的帮助下,找到了错误的原因。

排错的sql如下:

declare
  l_data_build_time   varchar2(40);
  l_data_build_time_d date;
begin
  for x in (select distinct data_build_time from bi_ods.dr_crdt_rskdoo_rslt) loop #将需要to_data()的列放入循环中
    l_data_build_time := x.data_build_time;
    select to_date(l_data_build_time, 'yyyy-mm-dd')
      into l_data_build_time_d
      from dual;
  end loop;
exception
  when others then
    dbms_output.put_line(l_data_build_time);
end;

查错思路如下:将to_date()操作的语句放入到for循环中去,如果转换失败,则将异常的列展现出来。有点像python的try...except语句。sql执行结果如下:

发现有一行格式与其它行不一致,真是坑爹。。。。

猜你喜欢

转载自blog.csdn.net/lz_peter/article/details/81221588