CREATE OR REPLACE FUNCTION CALC_SALARY(p_empno IN NUMBER, p_sal IN NUMBER, p_overtime IN NUMBER)
RETURN NUMBER IS
v_bonus NUMBER := 0;
v_total_salary NUMBER := 0;
BEGIN
IF p_overtime >= 50 THEN
v_bonus := 1000;
ELSIF p_overtime >= 30 AND p_overtime
以上代码中,我们根据加班时间的不同设置了不同的奖金,同时还考虑了员工的基本薪资和加班时间,最终得出了该员工的总收入。通过定义这样一个存储函数,我们可以在实际应用中快速地计算出每个员工的总收入。
值得一提的是,在Oracle中,存储函数可以返回各种不同的数据类型,包括数字、字符串、日期、布尔值等等。例如,下面的代码定义了一个名为IS_VALID的存储函数,它根据传入的身份证号判断该号码是否为有效身份证:
CREATE OR REPLACE FUNCTION IS_VALID(p_idcard IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
IF LENGTH(p_idcard)18 OR NOT REGEXP_LIKE(p_idcard, '^[0-9]{17}[0-9X]$') THEN
RETURN FALSE;
END IF;
-- 校验身份证号码逻辑省略
RETURN TRUE;
END;
以上代码中,我们使用了布尔类型作为了函数的返回值,这样可以更加方便地进行逻辑判断,判断某个身份证号码是否为有效身份证。
综上所述,存储函数是Oracle数据库中一种非常重要的编程工具。它可以帮助我们封装各种复杂的功能,从而提高我们的编程效率。无论是计算、格式转换还是数据校验,存储函数的应用都可以让我们的工作变得更加简单高效。