我在返回的程序中有一个查询' 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
答案 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;