Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新员工工作满一年的工资_Sql_Oracle_Plsql - Fatal编程技术网

Sql 更新员工工作满一年的工资

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

我必须照标题上说的去做。我必须更新员工每工作一整年的工资。我使用的是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 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
生成的是天数,而不是年数。只是一个想法。