为给定的规范编写pl/sql过程。假设表格设计如下:
Table Name :
employee_details
Column Name Data Type Constraint
Emp_ID NUMBER(5) NOT NULL Primary Key
Emp_Name VARCHAR2(100) NOT NULL
Date_Joined DATE NOT NULL
Gender CHAR(1) NOT NULL
Salary NUMBER(20,2) NOT NULL
Increment CHAR(1) NULL Y / N
如果员工的增量标志设置为y并提交所做的更改,则该过程用于以给定值递增薪资
程序名称:prc\增量输入参数:a\ emp\ id,a\薪资输出参数:a\ exec\ U status
如果找不到给定的员工,则按过程返回消息“找不到员工”找到员工且增量标志不为y“增量不适用于员工”–[给定的员工id]成功更新“为员工成功更新”–[给定的员工id]任何其他未处理的异常错误以及有关oracle错误的信息
下面的代码我已经试过了,请帮我的程序
CREATE OR replace PROCEDURE Prc_increment(a_emp_id IN VARCHAR2,
a_salary IN VARCHAR2)
AS
CURSOR c1 IS
SELECT emp_id,
salary,
increment_stat
FROM emp
WHERE emp_id = a_emp_id;
num_salary emp.salary%TYPE;
num_emp_id emp.emp_id%TYPE;
num_increment_stat emp.increment_stat%TYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO num_emp_id, num_salary, num_increment_stat;
IF num_emp_id <> a_emp_id THEN
dbms_output.Put_line('Employee not found');
ELSIF num_increment_stat <> 'Y' THEN
dbms_output.Put_line('Employee not eligible for increment');
ELSE
UPDATE emp
SET salary = num_salary + a_salary
WHERE emp_id = a_emp_id
AND increment_stat = 'Y';
END IF;
EXIT WHEN c1% NOTFOUND;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.Put_line(SQLERRM);
CLOSE c1;
END;
暂无答案!
目前还没有任何答案,快来回答吧!