问题描述
我需要使用PL-SQL或SQL来做我的查询。
首先: 我想将函数F_CALCUL_TAUX主体中使用的所有IF .. END IF转换为CASE .. where .. END,并在查询中使用结果。
Secundo: 有可能转换它并在PL-SQL集团内部使用它?
谢谢。
首先: 我想将函数F_CALCUL_TAUX主体中使用的所有IF .. END IF转换为CASE .. where .. END,并在查询中使用结果。
Secundo: 有可能转换它并在PL-SQL集团内部使用它?
谢谢。
专家解答
主要是更改IF -> CASE的问题。提供您在PL/SQL中使用此作为case语句,这是关于它的。
但是...
在SQL中调用函数 -- 尤其是在where/join子句中 -- 可能会非常慢。
这就是你想转换这个的原因吗?所以你可以直接在你的查询中使用大小写表达式?
如果是这样,则需要删除 “VRESULT :=” 分配,半冒号和结尾。
然后交换列的变量名。例如:
但是...
在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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




