Triggers inválidos

Hola sindimad como estas hace poco me ayudaste con el tema de la auditoria por campos, he avanzado bastante y con la ejecución de FORMS_DDL he logrado hacer lo que necesito ahora tengo el siguiente problema.
Genero el código para el trigger y usando FORMS_DDL lo creo en la tabla pero se crea en estado INVALIDO, esto lo veo en el Toad, lo raro de esto es que si copio el código del trigger de la tabla y lo pego en el editor del Toad y lo ejecuto sin hacerle ningún cambio se genera en estado válido. El error que indica es el siguiente:
TRIGGER NAF47.TRG_ARCPCBPI
On line: 1
PLS-00103: Se ha encontrado el símbolo "" cuando se esperaba uno de los siguientes:
   begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe

Y el codigo que genera el trigger es este:
NOTA: Tsh_audit. Alltrim y Tsh_Audit. Esquema son funciones en un paquete que yo cree para quitar espacios en blanco y obtener el esquema de trabajo respectivamente. CTabla lo obtengo de un campo en un bloque del form.

v_sql:='CREATE OR REPLACE TRIGGER TRG_'||TSH_AUDIT.Alltrim(cTabla)||CHR(13);
        v_sql:=v_sql||'AFTER INSERT';
        v_sql:=v_sql||' ON '||TSH_AUDIT.ESQUEMA||'.'||TSH_AUDIT.Alltrim(cTabla)||CHR(13);
        v_sql:=v_sql||'FOR EACH ROW'||CHR(13);
        v_sql:=v_sql||'BEGIN'||chr(13);
        v_sql:=v_sql||'    IF INSERTING THEN'||CHR(13);
        v_sql:=v_sql||'        Insert Into Aud_Repositorio'||CHR(13);
        v_sql:=v_sql||'            (id_e,id_a,usuario,descripcion,old_value,'||CHR(13);
      v_sql:=v_sql||'                no_reg,clave,ip_machine,datetime,new_value,'||CHR(13);
        v_sql:=v_sql||'                pc,accion,forma) '||CHR(13);
        v_sql:=v_sql||'        Values'||CHR(13);
        v_sql:=v_sql||'            (1,1,''usuario'',''probando el modulo de auditoria'',''old value'','||CHR(13);
        v_sql:=v_sql||'                1,''campo modificado'',''192.148.30.24'','||CHR(13);
        v_sql:=v_sql||'                ''HORA'',''valor nuevo'',''pc'','||CHR(13);
        v_sql:=v_sql||'                ''I'',''nombre forma'');'||chr(13);
        v_sql:=v_sql||'    END IF;'||CHR(13);
        v_sql:=v_sql||'END;';
FORMS_DDL(v_sql);
Gracias por tu tiempo y ayuda.

1 respuesta

Respuesta
1
Puede que el chr(13) (salto de linea creo) esté dando guerra, prueba a hacerlo sin el salto de linea.
Puede también que sea una comilla, sería bueno ver el código que genera antes de ejecutar el forms_dll.
Gracias por tu respuesta, efectivamente era el CHR(13), se los quite todos y ya quedo el trigger en estado válido, no se ve muy estético el código en la tabla pero eso es lo de menos. De nuevo mil gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas