【发布时间】:2020-12-09 19:26:54
【问题描述】:
Oracle 中是否有以类似方式工作的内置函数?
CREATE OR REPLACE FUNCTION IFTrueValue(iValue NUMBER, sOper VARCHAR2, iTest NUMBER, iTrue NUMBER) RETURN NUMBER AS
bCond BOOLEAN;
BEGIN
EXECUTE IMMEDIATE 'SELECT CASE WHEN ' || iValue || sOper || iTest || ' THEN 1 ELSE 0 END FROM dual' INTO bCond;
RETURN CASE bCond
WHEN TRUE THEN iTrue
ELSE iValue
END;
END;
/
SELECT IFTrueValue(Mod(20, 20), '=', 0, 20) FROM dual; -- return 20
SELECT IFTrueValue(Mod(25, 20), '=', 0, 20) FROM dual; -- return 5: Mod(25, 20)
【问题讨论】:
-
这个功能有什么问题?
-
功能没问题,想知道是有一个还是只有内置一个