日期:2014-05-17  浏览次数:20842 次

求解,ORACLE的小问题,入门级的
定义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)
AS
DECLARE 
V_SALARY NUMBER;
V_AVG_SALARY NUMBER;
BEGIN
UPDATE 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) THEN
update SCOTT.EMP set salary=salary+500 where emp_id=v_EMP_ID;
END IF;
END;