【发布时间】:2022-01-08 14:41:15
【问题描述】:
我已经为此工作了一段时间,但代码不起作用,我无法找出正确的解决方案。我是否错过了代码中的某些内容?谢谢。
-- 问题--公司要计算员工的年薪:--入职第一年,工资金额为基本工资,即$10,000。 ——之后的每一年,工资都会增加5%。 -- 编写一个名为 calculate_salary 的存储过程,该过程获取一个员工 ID,并且 -- 该员工根据员工在公司工作的年数计算薪水。 (使用循环结构来计算工资)。 -- 程序计算并打印工资。 -- 示例输出: --First Name:first_name --Last Name:last_name --Salary:$9999,99 --如果员工不存在,程序会显示适当的消息。
CREATE OR REPLACE PROCEDURE calculate_salary(EMPLOYEE_ID EMPLOYEES.EMPLOYEE_ID%TYPE) AS
increase FLOAT := 1.05;
base_salary NUMBER := 10000;
TENURE NUMBER;
SALARY NUMBER;
EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
FIRST_NAME EMPLOYEES.FIRST_NAME%TYPE;
LAST_NAME EMPLOYEES.FIRST_NAME%TYPE;
BEGIN
SELECT EMPLOYEE_ID, ROUND((SYSDATE - HIRE_DATE)/365,0), FIRST_NAME, LAST_NAME INTO EMP_ID,TENURE, FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE EMPLOYEE_ID = EMP_ID;
FOR i IN 0..TENURE LOOP
SALARY := base_salary * i;
END LOOP;
DBMS_OUTPUT.PUT_LINE ('First Name: '||FIRST_NAME);
DBMS_OUTPUT.PUT_LINE ('Last Name: '||LAST_NAME);
DBMS_OUTPUT.PUT_LINE ('Salary: '||TO_CHAR(SALARY,'$99,999.99'));
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('No Data Found!');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('Error!');
END;
/
BEGIN
calculate_salary(1);
END;
/
【问题讨论】:
-
您收到的错误信息是什么?