0

我在想必须有一个函数可以充当阈值,这样我就不需要在我的代码中添加一堆 if-then-elses。

我写了一个 UDF 来做我需要的事情,但是如果有人知道 PL/SQL 函数或代码,我可以说类似的话;

X := APPLY_THRESHOLD(LASTNAME_SCORE,PATIENT_LASTNAME_THRESHOLD,0);

其中 X 可以是 lastname_score,也可以是 0,这取决于它是否大于或等于 patient_last_name_threshold。我写的函数是;

  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;

但是如果语言中内置了一些东西,它可能会更快。

4

1 回答 1

1

尝试这个

select decode(sign(IN_VALUE - IN_THRESHOLD), -1, IN_FLOOR, IN_VALUE) 
into x from dual;

符号(数字)函数

如果number < 0它会返回-1,如果number = 0那么0其他1

于 2013-05-07T21:34:20.410 回答