plsql 函数实现员工调薪 根据工作年限 emp表
下面是一个使用PL/SQL函数实现员工调薪的例子,该函数根据员工的工作年限来计算调薪后的薪水:
CREATE OR REPLACE FUNCTION adjust_salary(p_emp_id IN emp.emp_id%TYPE)
RETURN NUMBER
IS
v_salary emp.salary%TYPE;
v_years emp.years_worked%TYPE;
BEGIN
-- 获取员工的薪水和工作年限
SELECT salary, years_worked
INTO v_salary, v_years
FROM emp
WHERE emp_id = p_emp_id;
-- 根据工作年限计算调薪后的薪水
IF v_years < 5 THEN
v_salary := v_salary * 1.1; -- 薪水增加10%
ELSIF v_years >= 5 AND v_years < 10 THEN
v_salary := v_salary * 1.2; -- 薪水增加20%
ELSE
v_salary := v_salary * 1.3; -- 薪水增加30%
END IF;
-- 更新员工的薪水
UPDATE emp
SET salary = v_salary
WHERE emp_id = p_emp_id;
-- 返回调薪后的薪水
RETURN v_salary;
EXCEPTION
-- 处理异常
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('员工不存在');
RETURN NULL;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误');
RETURN NULL;
END;
/
使用这个函数,你可以传入一个员工的emp_id,它会根据员工的工作年限计算出调薪后的薪水,并更新emp表中的薪水字段。函数返回调薪后的薪水值。如果传入的emp_id不存在,则会返回NULL。如果发生其他错误,则会返回NULL,并在控制台输出错误信息。
你可以像这样调用函数来实现员工调薪:
DECLARE
v_new_salary NUMBER;
BEGIN
v_new_salary := adjust_salary(1001); -- 调薪员工ID为1001的员工
DBMS_OUTPUT.PUT_LINE('调薪后的薪水为:' || v_new_salary);
END;
/
请注意,这只是一个示例,你需要根据你的实际需求进行适当的修改
原文地址: https://www.cveoy.top/t/topic/hHU8 著作权归作者所有。请勿转载和采集!