昨天遇到一个很郁闷的问题,写了一个oracle 的function SQL如下
1
CREATE OR REPLACE FUNCTION CALCs1(Lf NUMBER)2
RETURN NUMBER AS3
S1 NUMBER;4
K NUMBER;5
BEGIN6
CASE7
WHEN Lf>0.92 THEN K :=0;8
WHEN Lf>0.75 AND Lf<=0.92 THEN K :=(1.257407-2.44079*Lf+1.320967*Lf*Lf);9
WHEN Lf<=0.75 THEN K :=0.17;10
else K :=0;--这是后来加的11
END CASE;12
S1 :=(1+K*(0.92-Lf)/Lf);13
--dbms_output.put_line('Lf='||lf||'K='||K||' S1='||S1);14
RETURN S1;15
EXCEPTION16
WHEN INVALID_NUMBER THEN17
RETURN 0;18
END;
写完后测试了一下通过了,但是在调用的时候总是出现这样的错误

看了半天也没有发现case when 有什么问题,问题到底出在那里列
在这里找到了答案http://www.error-code.org.uk/view.asp?e=ORACLE-ORA-06592
case when 需要有else
不明白我为什么创建成功了测试一下结果也计算出来了,就是调用的时候出这个错
记下来,免得以后再犯这样的错。
本文记录了一次在Oracle中创建Function SQL时遇到的问题:CASE WHEN 语句缺少ELSE分支导致的错误。虽然创建和初步测试成功,但在实际调用时出现ORA-06592错误。文章详细介绍了问题的原因及解决办法。
8238

被折叠的 条评论
为什么被折叠?



