Sql 更新员工工作满一年的工资
我必须照标题上说的去做。我必须更新员工每工作一整年的工资。我使用的是HR模式,所以你可以试试。我现在的代码是这样的:Sql 更新员工工作满一年的工资,sql,oracle,plsql,Sql,Oracle,Plsql,我必须照标题上说的去做。我必须更新员工每工作一整年的工资。我使用的是HR模式,所以你可以试试。我现在的代码是这样的: CREATE OR REPLACE FUNCTION new_salary (v_employee_id number) RETURN number IS v_result number; BEGIN UPDATE employees SET salary = CASE WHEN sysdate-hire_date >=1 TH
CREATE OR REPLACE FUNCTION new_salary (v_employee_id number)
RETURN number IS v_result number;
BEGIN
UPDATE employees SET salary =
CASE
WHEN sysdate-hire_date >=1 THEN salary +(salary*0.01)
ELSE salary
END
INTO v_result WHERE employee_id = v_employee_id;
RETURN v_result;
END new_salary;
/
这个代码还没有运行,我还应该做什么?而且,我不知道怎么说工资必须增加几倍。提前谢谢
INTO
不能与UPDATE
语句一起使用
您可以使用以下代码:
CREATE OR REPLACE FUNCTION NEW_SALARY (
V_EMPLOYEE_ID NUMBER
) RETURN NUMBER IS
V_RESULT NUMBER;
BEGIN
SELECT
CASE
WHEN MONTHS_BETWEEN(SYSDATE, HIRE_DATE) / 12 >= 1
THEN SALARY + ( SALARY * 0.01 )
-- SALARY + ( SALARY * 0.01 * TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12))
-- CODE TO MULTIPLY THE INCREMENT WITH NUMBER OF YEARS.
ELSE SALARY
END
INTO V_RESULT
FROM
EMPLOYEES
WHERE
EMPLOYEE_ID = V_EMPLOYEE_ID;
UPDATE EMPLOYEES
SET
SALARY = V_RESULT
WHERE
EMPLOYEE_ID = V_EMPLOYEE_ID;
COMMIT;
RETURN V_RESULT;
END NEW_SALARY;
/
干杯 “我使用的是人力资源模式,所以你可以试试。”不,你需要编辑你的问题,发布示例数据和预期输出。谢谢。您可能需要尝试添加COMMIT语句。另外-
SYSDATE-HIRE\u DATE
生成的是天数,而不是年数。只是一个想法。