暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 转换IF否则结束IF到CASE

ASKTOM 2020-02-12
559

问题描述

我需要使用PL-SQL或SQL来做我的查询。
首先: 我想将函数F_CALCUL_TAUX主体中使用的所有IF .. END IF转换为CASE .. where .. END,并在查询中使用结果。
Secundo: 有可能转换它并在PL-SQL集团内部使用它?

谢谢。

专家解答

主要是更改IF -> CASE的问题。提供您在PL/SQL中使用此作为case语句,这是关于它的。

但是...

在SQL中调用函数 -- 尤其是在where/join子句中 -- 可能会非常慢。

这就是你想转换这个的原因吗?所以你可以直接在你的查询中使用大小写表达式?

如果是这样,则需要删除 “VRESULT :=” 分配,半冒号和结尾。

然后交换列的变量名。例如:

LEFT OUTER JOIN TABLE_4 TABLE_4 
ON TABLE_4.Taux = CASE
  WHEN ((P4 <= 0 OR P4 IS NULL) AND (P1 > 0)) OR ((P1 <= 0) OR (P1 IS NULL) ) THEN  
    'Taux1'
  ELSE 
    CASE
      WHEN P5 >= '2006' THEN IF P6 > 0 AND P3 IS NULL THEN 
      WHEN ( P7 > 0  AND P6 > 0  AND P8 > 0) OR 
            ((NVL(P7,0) = 0) AND (P6 > 0) AND (P9 < 15000000 OR P9 IS NULL) AND (UPPER(P10) = 'N')) THEN  
        'Taux2'
      WHEN NVL(VAR1,0) = 0 AND NVL(P_MNT_L420B,0) = 0 THEN 
        'Taux3'
      WHEN VAR1 > 0 AND NVL(P_MNT_L420B,0) = 0 THEN 
        'Taux4' 
      WHEN ...
    END
END

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论