TRIGGER

MANUEL
18 de Marzo del 2004
ECHADLE UN VISTAZO AL CODIGO EN PL/SQL. NO LOGRO ENCONTRAR EL ERROR, NO LO ENTIENDO....
AYUDADME POR FAVOR Q ME STOY VOLVIENDO LOKO.
SE TRATA DE UNA VISTA Y APARTIR DE ELLA TENGO Q HACER UN TRIGGER O DISPARADOR Q FACILITE LAS OPERACIONES DE INSERCION,BORRADO Y MODIFICACION.
GRACIAS

CREATE VIEW EMPLEAD AS SELECT EMP_NO, APELLIDO, OFICIO, DNOMBRE, LOC
FROM EMPLE E, DEPART D
WHERE E.DEPT_NO=D.DEPT_NO;


/*TRIGGER QUE FACILITA OPERACIONES DE INSERCION,BORRADO Y MODIFICACION*/
CREATE OR REPLACE TRIGGER EXAMEN
INSTEAD OF DELETE OR INSERT OR UPDATE
ON EMPLEAD
FOR EACH ROW
DECLARE
V_DEPT DEPART.DEPT_NO%TYPE;
BEGIN
IF DELETING THEN
DELETE FROM EMPLE WHERE EMP_NO=:OLD.EMP_NO;
ELSIF INSERTING THEN
SELECT DEPT_NO INTO V_DEPT FROM DEPART WHERE DEPART.NOMBRE=:NEW.DNOMBRE AND LOC=:NEW.LOC;
INSERT INTO EMPLE (EMP_NO,APELLIDO,OFICIO,DEPT_NO) VALUES (:NEW.EMP_NO,:NEW.APELLIDO,:NEW.OFICIO,V_DEPT);
ELSIF UPDATING (‘DNOMBRE’) THEN
SELECT DEPT_NO INTO V_DEPT FROM DEPART WHERE DNOMBRE =:NEW.DNOMBRE;
UPDATE EMPLE SET DEPT_NO=V_DEPT WHERE EMP_NO=:OLD.EMP_NO;
ELSIF UPDATING (‘OFICIO’) THEN
UPDATE EMPLE SET OFICIO=:NEW.OFICIO WHERE EMP_NO=:OLD.EMP_NO;
ELSE
RAISE_APPLICATION_ERROR(-20500, ‘ERROR EN LA ACTUALIZACION’);
END IF;
END;
/

manuel
18 de Marzo del 2004
el error q me da es:
en el deleting
9/17 PLS-00103: Se ha encontrado el símbolo "" cuando se esperaba uno
de los siguientes:
( ) - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
year month DAY_ HOUR_ MINUTE_ second TIMEZONE_HOUR_
TIMEZONE_MINUTE_ time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL

set
18 de Marzo del 2004
podrías describir las tablas de empleado y departamento.
Veo que tienes en departamento un nombre y un dnombre

slds

set
18 de Marzo del 2004
Estas seguro que la sintaxis es correcta,
primero: no usas la sentencia after o before
segundo: estas diciendo que cuando se borre o inserte en una vista.

¿Estas claro con lo que haces?

Slds

guru_oracle
18 de Marzo del 2004
Dime que error te da, porque sino....