
Untitled
By: a guest on
May 12th, 2012 | syntax:
None | size: 1.66 KB | hits: 18 | expires: Never
Dynamic column_value according dynamic column_name in a trigger
CREATE OR REPLACE TRIGGER aft_ins_soliccambio
AFTER INSERT OR DELETE OR UPDATE
ON SEG_V_SOLICCAMBIO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
old_col_value VARCHAR2 (4000);
new_col_value VARCHAR2 (4000);
BEGIN
FOR REC IN ( SELECT OWNER, TABLE_NAME, COLUMN_NAME
FROM all_tab_columns
WHERE OWNER = 'EUCEDA' AND (TABLE_NAME = 'SEG_V_SOLICCAMBIO')
ORDER BY column_id)
LOOP
EXECUTE IMMEDIATE ' select :new.' || REC.COLUMN_NAME || ' from dual'
INTO new_col_value;
pkg_tumi.insert_auditoria ('SEG_V_SOLICCAMBIO',
REC.COLUMN_NAME,
:new.EMPR_IDEMPRESA_N,
fn_get_pk ('SEG_V_SOLICCAMBIO', 1),
fn_get_pk ('SEG_V_SOLICCAMBIO', 2),
fn_get_pk ('SEG_V_SOLICCAMBIO', 3),
fn_get_pk ('SEG_V_SOLICCAMBIO', 4),
fn_get_pk ('SEG_V_SOLICCAMBIO', 5),
fn_get_pk ('SEG_V_SOLICCAMBIO', 6),
1,
'',
new_col_value,
SYSDATE,
NULL);
END LOOP;
END;
new_col_value := CASE REC.COLUMN_NAME
WHEN 'COLUMN_1' THEN :new.column_1
WHEN 'COLUMN_2' THEN :new.column_2
WHEN 'COLUMN_3' THEN :new.column_3
...
END;