【问题标题】:Oracle PLSQL exception inserting datesOracle PLSQL 异常插入日期
【发布时间】:2017-01-03 08:30:39
【问题描述】:

我在一个过程中有一个INSERT 语句,其中将NUMBER 格式的日期字段转换为DATE,但在某些情况下无法进行转换。我尝试使用 EXCEPTION WHEN OTHERS THEN 处理异常,但它没有插入任何行。

当无法进行转换时,我只想在DATE 字段中插入NULL

我必须使用任何游标或集合吗?

【问题讨论】:

标签: oracle exception plsql oracle11g


【解决方案1】:

像这样创建自己的函数:

create or replace function safe_to_date(p number) return date DETERMINISTIC is
  begin
    return to_date(p, 'yyyymmdd');
  exception 
    when value_error
    then return null;
end;

输出

select safe_to_date(00000) as test from dual;
TEST   
--------


select safe_to_date(20160826) as test from dual;
TEST   
--------
26.08.16

【讨论】:

  • to_date 也被 PL/SQL 识别,因此无需在其中添加无意义(且影响性能)的 SQL 查询。
  • 另外,不要在没有加薪的情况下使用 when others - 而是使用您期望的特定异常。
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
相关资源
最近更新 更多