还有就是我们有必要处理异常吗?
最经小头儿给了我一个活,要我根据一些参数算保费。
根据用户的参数不同算法也不同,我基本上都实现了。
现在我想的问题是异常处理部分,首先我们共同的意识是
业务逻辑的判断不应该我们来做,但是他提出了一些问题,
表示了一些担忧(此人技术感觉不是很强),认为还是在function里面
进行一些异常判断,比如我代码中有累加的情况,他说如果你求出的
情况有null的,那么累加时会怎么样?等等一些。我试了试,总结一句话,
oracle不像java那样有异常处理,好像只要一出异常就立即返回null。
一 我的结论对不对?
二 我该怎么对他说?

解决方案 »

  1.   


    --oracle有异常处理,很强大,不比java弱~~~
    create or replace function...
    ...
    beginexception
      when others then
        --写你想要做的事
    end;
      

  2.   


    楼上能不能多几个when,我不是很懂。针对具体语法给个例子,exception
      

  3.   

    如果有NULL值,而你在程序中不判断的话,你的函数不能正常执行,直接就抛异常,跟java没什么区别吧。PLSQL有异常处理,你可以像楼上那样处理异常。
      

  4.   

    你的程序应该是没报异常吧,以为你做累加的时候如果有空值,结果就是空值了,算术运算的时候如果有NULL则结果就是空了,可以再程序中加入NVL(累加字段,0),表示如果累加的值是空的,则当做0处理。如果oracle中真有异常的话,和JAVA是一样的现象
      

  5.   

    谢谢各位,本人第一次写function,请多多指教
      

  6.   

        
    EXCEPTION
            when others then 
            dbms_output.put_line('计算出现错误');
            return -1;大哥们我简单处理了,只要出错,返回-1,只要对方知道这是错误也就算完成了。
    问题是那句打印不知道输出到哪里了。dbms_output.put_line('计算出现错误');
      

  7.   


    --这个打印,你运行时是没保存的,你要不写进文本,要不写到表里
    --在plsql中调试运行,可以从窗口中看到打印的信息
    ...
    exception
      when others then
        insert into table(a) values (sqlcode || sqlerrm);  --这是写进表里
        或者:
        utl_file包写文件
    end;