Tema: ayuda pl/sql
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/06/2009, 02:18
amnessia
 
Fecha de Ingreso: junio-2009
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
ayuda pl/sql

Hola,

Necesito una ayudita.

Tengo que hacer un procedimiento regulacion_salarial, que augmente un 10% el salario al departamento Administracion y reste un 5% al departamento Sales y le ponga como comission_pct un 0.25 y algo mas. Y tengo esto:



CREATE OR REPLACE PROCEDURE regulacion_salarial
(cod_emp IN employees.employee_id%TYPE,
sal OUT employees.salary%TYPE)

IS

dept departments.department_name%TYPE;
comision employees.commission_pct%TYPE;

BEGIN
SELECT emp.salary, dept.department_name
INTO sal, dept
FROM employees emp right join departments dept ON emp.department_id=dept.department_id
WHERE emp.employee_id = cod_emp;
IF dept = 'Administration' THEN
sal := sal*1.10;
END IF;
IF dept = 'Sales' THEN
sal := sal-(sal*0.05);
comision :=0 .25;
ELSE
sal := sal+100;
END IF;

END ;



Tengo un problema con las excepciones. Que tengo que sacar 2 mensajes uno para cuando el departamento sea nulo y otro que avise que no se puede augmentar mas sueldo que el que tiene el jefe. No tengo ni idea de como hacerlo:



CREATE OR REPLACE PROCEDURE regulacion_salarial
(cod_emp IN employees.employee_id%TYPE,
sal OUT employees.salary%TYPE)

IS
id_dept employees.department_id%TYPE;
dept departments.department_name%TYPE;
comision employees.commission_pct%TYPE;

BEGIN
SELECT emp.salary, dept.department_name
INTO sal, dept
FROM employees emp right join departments dept ON emp.department_id=dept.department_id
WHERE emp.employee_id = cod_emp;
IF dept = 'Administration' THEN
sal:=sal*1.10;
END IF;
IF dept='Sales' THEN
sal:=sal-(sal*0.05);
comision:=0.25;
ELSE
sal:=sal+100;
END IF;
IF id_dept IS NULL THEN
RAISE dept_equivocado;
END IF;

EXCEPTIONS
WHEN dept_equivocado THEN

END ;




No se como seguir todo lo que pruebo da error. Necesitaria que me ayudarias. Gracias de antemano.