编写pl/sql过程

ac1kyiln  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(260)

为给定的规范编写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;

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题