Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/12/2012, 21:37
jgrc
 
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Como evitar el insert del before insert.

Gracias morway por tu ayuda, mira quedo asi:
Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER tr_polizasprueba
  2. BEFORE INSERT ON polizasprueba
  3. REFERENCING NEW AS NEW
  4. FOR EACH ROW
  5. DECLARE
  6.   existe INTEGER;
  7. BEGIN
  8.    SELECT COUNT(*) INTO existe FROM polizasprueba
  9.      WHERE TIPOPOLIZA = :NEW.TIPOPOLIZA AND FOLIO = :NEW.FOLIO AND to_char((FECHA),'yyyy') = to_char((:NEW.FECHA),'yyyy');
  10.      IF existe >0 THEN
  11.         UPDATE polizasprueba
  12.         SET CLASE = :NEW.CLASE,IDDIARIO = :NEW.IDDIARIO,CONCEPTO = :NEW.CONCEPTO,
  13.             SISTEMAORIGEN = :NEW.SISTEMAORIGEN,IMPRESA = :NEW.IMPRESA,IDUSUARIO = :NEW.IDUSUARIO,
  14.             FECHAALTA = :NEW.FECHAALTA,BALANCEADA = :NEW.BALANCEADA
  15.         WHERE TIPOPOLIZA = :NEW.TIPOPOLIZA AND FOLIO = :NEW.FOLIO AND to_char((FECHA),'yyyy') = to_char((:NEW.FECHA),'yyyy');
  16.        RAISE_APPLICATION_ERROR('No registrar el insert');
  17.         procerror;
  18.      END IF;
  19. END;

solo agregueas lineas en rojo y en la sección de procedimientos, quedo asi:
Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE procerror IS
  2. PRAGMA AUTONOMOUS_TRANSACTION;
  3. BEGIN
  4. ROLLBACK;
  5. DBMS_OUTPUT.PUT_LINE('rollback ejecutado');
  6. 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.

Última edición por gnzsoloyo; 18/12/2012 a las 09:26 Razón: Código SQL sin etiquetar. Usar Highlight SQL