oracle case when Error:Ora-06592 Case语句时未找到case

昨天遇到一个很郁闷的问题,写了一个oracle 的function SQL如下

ContractedBlock.gif ExpandedBlockStart.gif Code
 1CREATE OR REPLACE FUNCTION CALCs1(Lf NUMBER)
 2RETURN NUMBER AS
 3S1 NUMBER;
 4NUMBER;
 5BEGIN
 6   CASE
 7      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 EXCEPTION
16    WHEN INVALID_NUMBER THEN
17    RETURN 0;
18END;

写完后测试了一下通过了,但是在调用的时候总是出现这样的错误

看了半天也没有发现case when 有什么问题,问题到底出在那里列

在这里找到了答案http://www.error-code.org.uk/view.asp?e=ORACLE-ORA-06592

case when 需要有else

不明白我为什么创建成功了测试一下结果也计算出来了,就是调用的时候出这个错

记下来,免得以后再犯这样的错。

转载于:https://www.cnblogs.com/followingme/archive/2008/11/12/1331824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值