处理Oracle中的错误号码

时间:2014-12-22 20:03:55

标签: oracle error-handling oracle11g

我在返回的程序中有一个查询' ORA-01722:无效的号码'一个记录。这是因为该字段实际上是文本,并且在某个记录中有人输入了该字段。#11;#11;而不是' - 。11',然后我们尝试将其添加到另一个数字。

当我知道可能存在错误号码时,如何处理查询?我想显示NULL或“错误”#39;或者在该领域的某些东西,而不是跳过它(坏)或查询失败(更糟)。

查询可能类似于以下内容,所有字段都定义为文本:

SELECT Tbl_ID
     , Tbl_InValue
     , Tbl_OutValue
     , (Tbl_InValue + Tbl_OutValue)/2 Tbl_Avg
From MyTable

如果我有以下表格值

Tbl_ID    Tbl_InValue    Tbl_OutValue
1          .5             3.2
2          1.1            .-11
3          -3             .5

我想输出类似

的内容
Tbl_ID    Tbl_InValue    Tbl_OutValue   Tbl_Avg
1          .5             3.2            1.85
2          1.1            .-11           ERROR
3          -3             .5             -1.25

1 个答案:

答案 0 :(得分:1)

您可以编写一个函数来执行计算并返回varchar2结果:

create function get_average(in_value in varchar2, out_value in varchar2) return varchar2 is
begin
  return to_char((to_number(in_value) + to_number(out_value)) / 2);
exception
  when others then
    return 'ERROR';
end;

然后在选择中使用它:

select get_average(Tbl_InValue, Tbl_OutValue) from MyTable;