Plsql 当x小于y时,PL/SQL是否有一个返回n值的内在函数?

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

我认为必须有一个函数作为阈值,这样我就不需要在代码中添加一堆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,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。或者,如果你已经这样做了。这是有效的,我会相信你,但我会坚持我自己的解决方案,因为它看起来更干净,我不确定哪一个会招致更多的开销。