Gracias morway por tu ayuda, mira quedo asi:
Código SQL:
Ver originalCREATE OR REPLACE TRIGGER tr_polizasprueba
BEFORE INSERT ON polizasprueba
REFERENCING NEW AS NEW
FOR EACH ROW
DECLARE
existe INTEGER;
BEGIN
SELECT COUNT(*) INTO existe FROM polizasprueba
WHERE TIPOPOLIZA = :NEW.TIPOPOLIZA AND FOLIO = :NEW.FOLIO AND to_char((FECHA),'yyyy') = to_char((:NEW.FECHA),'yyyy');
IF existe >0 THEN
UPDATE polizasprueba
SET CLASE = :NEW.CLASE,IDDIARIO = :NEW.IDDIARIO,CONCEPTO = :NEW.CONCEPTO,
SISTEMAORIGEN = :NEW.SISTEMAORIGEN,IMPRESA = :NEW.IMPRESA,IDUSUARIO = :NEW.IDUSUARIO,
FECHAALTA = :NEW.FECHAALTA,BALANCEADA = :NEW.BALANCEADA
WHERE TIPOPOLIZA = :NEW.TIPOPOLIZA AND FOLIO = :NEW.FOLIO AND to_char((FECHA),'yyyy') = to_char((:NEW.FECHA),'yyyy');
RAISE_APPLICATION_ERROR('No registrar el insert');
procerror;
END IF;
END;
solo agregueas lineas en rojo y en la sección de procedimientos, quedo asi:
Código SQL:
Ver originalCREATE OR REPLACE PROCEDURE procerror IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('rollback ejecutado');
END procerror;
solo que a la hora de compilarlo me marca estos errores:
Error(17,9): PL/SQL: Statement ignored
Error(17,9): PLS-00306: número o tipos de argumentos erróneos al llamar a 'RAISE_APPLICATION_ERROR'
voy a intentar encontrarlos errores y ejecutarlo, pero mas o menos es así como me recomendaste?
gracias.