Plsql 当x小于y时,PL/SQL是否有一个返回n值的内在函数?
我认为必须有一个函数作为阈值,这样我就不需要在代码中添加一堆if-then-else 我写了一个UDF来做我需要做的事情,但是如果有人知道PL/SQL函数或代码,我可以这样说Plsql 当x小于y时,PL/SQL是否有一个返回n值的内在函数?,plsql,Plsql,我认为必须有一个函数作为阈值,这样我就不需要在代码中添加一堆if-then-else 我写了一个UDF来做我需要做的事情,但是如果有人知道PL/SQL函数或代码,我可以这样说 X := APPLY_THRESHOLD(LASTNAME_SCORE,PATIENT_LASTNAME_THRESHOLD,0); 其中X将是lastname_分数,或0,取决于它是否大于或等于患者lastname_阈值。我写的函数是 FUNCTION APPLY_THRESHOLD(IN_VALUE NUMBER
X := APPLY_THRESHOLD(LASTNAME_SCORE,PATIENT_LASTNAME_THRESHOLD,0);
其中X将是lastname_分数,或0,取决于它是否大于或等于患者lastname_阈值。我写的函数是
FUNCTION APPLY_THRESHOLD(IN_VALUE NUMBER,IN_THRESHOLD NUMBER, IN_FLOOR NUMBER) RETURN NUMBER DETERMINISTIC AS
BEGIN
IF IN_VALUE < IN_THRESHOLD
THEN
RETURN IN_FLOOR;
ELSE
RETURN IN_VALUE;
END IF;
END APPLY_THRESHOLD;
函数APPLY_THRESHOLD(IN_VALUE NUMBER、IN_THRESHOLD NUMBER、IN_FLOOR NUMBER)返回的数字确定为
开始
如果IN_值
但是如果语言中内置了某种东西,它可能会更快。试试这个
select decode(sign(IN_VALUE - IN_THRESHOLD), -1, IN_FLOOR, IN_VALUE)
into x from dual;
如果
number<0
将返回-1
,如果number=0
则0
否则1
由于PL/SQL中没有IIF(),因此必须使用DECODE或CASE。或者,如果你已经这样做了。这是有效的,我会相信你,但我会坚持我自己的解决方案,因为它看起来更干净,我不确定哪一个会招致更多的开销。