oracle自定义function如果异常返回值是什么?

赵牧野 2011-09-05 04:33:25
还有就是我们有必要处理异常吗?
最经小头儿给了我一个活,要我根据一些参数算保费。
根据用户的参数不同算法也不同,我基本上都实现了。
现在我想的问题是异常处理部分,首先我们共同的意识是
业务逻辑的判断不应该我们来做,但是他提出了一些问题,
表示了一些担忧(此人技术感觉不是很强),认为还是在function里面
进行一些异常判断,比如我代码中有累加的情况,他说如果你求出的
情况有null的,那么累加时会怎么样?等等一些。我试了试,总结一句话,
oracle不像java那样有异常处理,好像只要一出异常就立即返回null。
一 我的结论对不对?
二 我该怎么对他说?
...全文
659 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanzs 2011-09-05
  • 打赏
  • 举报
回复

--这个打印,你运行时是没保存的,你要不写进文本,要不写到表里
--在plsql中调试运行,可以从窗口中看到打印的信息
...
exception
when others then
insert into table(a) values (sqlcode || sqlerrm); --这是写进表里
或者:
utl_file包写文件
end;
赵牧野 2011-09-05
  • 打赏
  • 举报
回复
    
EXCEPTION
when others then
dbms_output.put_line('计算出现错误');
return -1;

大哥们我简单处理了,只要出错,返回-1,只要对方知道这是错误也就算完成了。
问题是那句打印不知道输出到哪里了。dbms_output.put_line('计算出现错误');
赵牧野 2011-09-05
  • 打赏
  • 举报
回复
谢谢各位,本人第一次写function,请多多指教
新丁11111 2011-09-05
  • 打赏
  • 举报
回复
一般情况下都是根据输入参数去界定异常
lnuwhy 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 flyfeifei66 的回复:]
还有就是我们有必要处理异常吗?
最经小头儿给了我一个活,要我根据一些参数算保费。
根据用户的参数不同算法也不同,我基本上都实现了。
现在我想的问题是异常处理部分,首先我们共同的意识是
业务逻辑的判断不应该我们来做,但是他提出了一些问题,
表示了一些担忧(此人技术感觉不是很强),认为还是在function里面
进行一些异常判断,比如我代码中有累加的情况,他说如果你求出的
情况有null……
[/Quote]
你的程序应该是没报异常吧,以为你做累加的时候如果有空值,结果就是空值了,算术运算的时候如果有NULL则结果就是空了,可以再程序中加入NVL(累加字段,0),表示如果累加的值是空的,则当做0处理。如果oracle中真有异常的话,和JAVA是一样的现象
lnuwhy 2011-09-05
  • 打赏
  • 举报
回复
如果有NULL值,而你在程序中不判断的话,你的函数不能正常执行,直接就抛异常,跟java没什么区别吧。PLSQL有异常处理,你可以像楼上那样处理异常。
赵牧野 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hanzs 的回复:]

SQL code

--oracle有异常处理,很强大,不比java弱~~~
create or replace function...
...
begin

exception
when others then
--写你想要做的事
end;
[/Quote]

楼上能不能多几个when,我不是很懂。针对具体语法给个例子,exception
hanzs 2011-09-05
  • 打赏
  • 举报
回复

--oracle有异常处理,很强大,不比java弱~~~
create or replace function...
...
begin

exception
when others then
--写你想要做的事
end;

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧