定义v_depno代表用户输入的部门编号,根据此编号修改EMP表中此部门名称为’IT’
定义v_depname代表用户输入的需要删除的部门名称,从EMP表中删除此部门名称的记录
定义emp_id代表用户输入的员工id,从EMP表中获取此员工的工资,如果工资小于EMP表中的平均员工工资,则将此员工工资增加500
这貌似都是一类的问题,要求是调用函数,我用的是SCOTT.EMP表,求大大们教我一下,PL/SQL语句
------解决方案--------------------
写一个存储函数就完了。
只写第1个吧,修改部门名称
- SQL code
create or replace function FunAlterDepartmentName(v_depno varchar(20)) return varchar2 is Result varchar2;begin update scott.EMP set deptname = 'IT' where deptno = v_depno; Result = 'IT'; return(Result);end FunAlterDepartmentName;
------解决方案--------------------
- SQL code
CREATE OR REPLACE PROCEDURE USP_DML(V_DEPNO IN VARCHAR2,V_DEPNAME IN VARCHAR2,v_EMP_ID IN VARCHAR2)ASDECLARE V_SALARY NUMBER;V_AVG_SALARY NUMBER;BEGINUPDATE SCOTT.EMP SET DEPNAME='IT' WHERE DEPNO=V_DEPNO;DELETE FROM SCOTT.EMP WHERE DEPNAME=V_DEPNAME;SELECT AVG(SALARY) INTO V_AVG_SALARY FROM SCOTT.EMP;SELECT SALARY INTO V_SALARY FROM SCOTT.EMP WHERE EMP_ID=V_EMP_ID;IF(V_SALARY < V_AVG_SALARY) THENupdate SCOTT.EMP set salary=salary+500 where emp_id=v_EMP_ID;END IF;END;