GESTIONAR EXCEPCIONES EN ORACLE

Iniciado por inquilin@19, 1 Febrero 2012, 18:56 PM

0 Miembros y 1 Visitante están viendo este tema.

inquilin@19

Hola a todos, vereis estoy haciendo unos ejercicios de Oracle sobre el tratamiento de excepciones, el código que tengo es el siguiente:
SQL> DECLARE
  2  numero EMPLE.EMP_NO%TYPE;
     apellido EMPLE.APELLIDO%TYPE;
     puesto EMPLE.OFICIO%TYPE;
     jefe EMPLE.DIR%TYPE;
     fecha EMPLE.FECHA_ALT%TYPE;
     salario EMPLE.SALARIO%TYPE;
     comision EMPLE.COMISION%TYPE;
     dep EMPLE.DEPT_NO%TYPE;
duplicado_no_emp EXCEPTION;
  5  BEGIN
  6  SELECT MAX(EMP_NO) INTO num_emple FROM EMPLE;
  7  SELECT SYSDATE INTO fecha FROM DUAL;
     apellido := 'VAZQUEZ';
     puesto := 'VENDEDOR';
     jefe := '7698';
     salario := '1200';
     comision := '200';
  8  dep := 20;
  9  num_emple := num_emple +1;     
10  INSERT INTO EMPLE
     VALUES (numero, apellido, puesto,jefe,fecha,salario,comision,dep);
IF numero IN SELECT EMP_NO FROM EMPLE;
RAISE duplicado_no_emp;
END IF;
IF jefe = NULL
RAISE no_dir;
END IF;
EXCEPTION
WHEN duplicado_no_em THEN
dbms_output.put_line('Número de empleado no puede estar duplicado');
WHEN no_dir THEN
dbms_output.put_line('¡Todo empleado tiene que tener jefe!');
END;
  /

No sé en que me falla pero no se ejecuta correctamente.
Otra duda que tengo, se supone que tengo que sacar de una tabla los dos empleados que mas cobran por oficio, he conseguido esto:
SQL> SELECT MIN(SALARIO), DEPT_NO FROM EMPLE GROUP BY DEPT_NO;
Pero no consigo sacar los dos que más cobran
Alguien me podría ayudar?
En cuanto resuelva el resto les subo por si a alguien le sirven
Un saludo y gracias de antemano
:D
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten

fran800m

Hace mucho que no toco PL, ¿pero no_dir no debería estar declarado?
y en el declare

DECLARE
numero EMPLE.EMP_NO%TYPE;
     apellido EMPLE.APELLIDO%TYPE;
     puesto EMPLE.OFICIO%TYPE;

¿no deberias separar con , en vez de ; ?

Si necesitas el máximo, ¿por qué usas min() ?

¿Qué mensaje de error et da?