Extraer nombre/campo y datos ORACLE
Datos de la estructura de la tabla
-------------------------------------------------------
Column_id Column_name Data_type
-------------------------------------------------------
1 Nombre char
2 Apellido char
3 Direccion char
4 Telefono char
5 Fecha date
Datos de la tabla
------------------------------------------------------------------------
Nombre Apellido Dirección Teléfono Fecha
------------------------------------------------------------------------
Juan Perez San Salvador 2610-2121 01/01/2010
La consulta es de que manera puedo realizar un trigger que pueda concatenar en un solo string (para Insertar/Actualizar) en el cual
me arme los datos dinámicamente el nombre del campo+el contenido del campo así:
Nombre: Juan Apellido: Perez Dirección: San Salvador Teléfono: 2610-2121 Fecha:01/01/2010
Todo esto para poderlo enviar a una tabla de traza de auditoria, tome un ejemplo pero no me funciona:
CREATE OR REPLACE TRIGGER "ESQUEMA_PRUEBA"."CREACION" BEFORE
INSERT ON "TABLA_PRUEBA" FOR EACH ROW
declare
n_traza number;
oldval varchar(2000);
newval varchar(1000);
begin
SELECT sysdate INTO :new.fecha_creacion FROM dual;
select SEC_AUDITORIA.nextval into n_traza from dual;
for row in (SELECT column_name from user_tab_columns where table_name='TABLA_PRUEBA') loop
execute immediate 'select :old.'||row.column_name||' from dual' into oldval;
execute immediate 'select :new.'||row.column_name||' from dual' into newval;
end loop;
insert into traza_auditoria (id_traza,usuario,fecha,operacion,datos)
values(99,:new.usuario_creacion,:new.fecha_creacion,'INSERCIÓN',newval);
end;
-------------------------------------------------------
Column_id Column_name Data_type
-------------------------------------------------------
1 Nombre char
2 Apellido char
3 Direccion char
4 Telefono char
5 Fecha date
Datos de la tabla
------------------------------------------------------------------------
Nombre Apellido Dirección Teléfono Fecha
------------------------------------------------------------------------
Juan Perez San Salvador 2610-2121 01/01/2010
La consulta es de que manera puedo realizar un trigger que pueda concatenar en un solo string (para Insertar/Actualizar) en el cual
me arme los datos dinámicamente el nombre del campo+el contenido del campo así:
Nombre: Juan Apellido: Perez Dirección: San Salvador Teléfono: 2610-2121 Fecha:01/01/2010
Todo esto para poderlo enviar a una tabla de traza de auditoria, tome un ejemplo pero no me funciona:
CREATE OR REPLACE TRIGGER "ESQUEMA_PRUEBA"."CREACION" BEFORE
INSERT ON "TABLA_PRUEBA" FOR EACH ROW
declare
n_traza number;
oldval varchar(2000);
newval varchar(1000);
begin
SELECT sysdate INTO :new.fecha_creacion FROM dual;
select SEC_AUDITORIA.nextval into n_traza from dual;
for row in (SELECT column_name from user_tab_columns where table_name='TABLA_PRUEBA') loop
execute immediate 'select :old.'||row.column_name||' from dual' into oldval;
execute immediate 'select :new.'||row.column_name||' from dual' into newval;
end loop;
insert into traza_auditoria (id_traza,usuario,fecha,operacion,datos)
values(99,:new.usuario_creacion,:new.fecha_creacion,'INSERCIÓN',newval);
end;
1 respuesta
Respuesta de dperdomo
-1