Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 12th, 2012  |  syntax: None  |  size: 1.66 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Dynamic column_value according dynamic column_name in a trigger
  2. CREATE OR REPLACE TRIGGER aft_ins_soliccambio
  3. AFTER INSERT OR DELETE OR UPDATE
  4. ON SEG_V_SOLICCAMBIO
  5. REFERENCING OLD AS OLD NEW AS NEW
  6. FOR EACH ROW
  7. DECLARE
  8.    old_col_value   VARCHAR2 (4000);
  9.    new_col_value   VARCHAR2 (4000);
  10. BEGIN
  11.    FOR REC IN (  SELECT OWNER, TABLE_NAME, COLUMN_NAME
  12.                    FROM all_tab_columns
  13.                   WHERE OWNER = 'EUCEDA' AND (TABLE_NAME = 'SEG_V_SOLICCAMBIO')
  14.                ORDER BY column_id)
  15.    LOOP
  16.       EXECUTE IMMEDIATE ' select :new.' || REC.COLUMN_NAME || ' from dual'
  17.                INTO new_col_value;
  18.  
  19.       pkg_tumi.insert_auditoria ('SEG_V_SOLICCAMBIO',
  20.                                  REC.COLUMN_NAME,
  21.                                  :new.EMPR_IDEMPRESA_N,
  22.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 1),
  23.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 2),
  24.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 3),
  25.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 4),
  26.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 5),
  27.                                  fn_get_pk ('SEG_V_SOLICCAMBIO', 6),
  28.                                  1,
  29.                                  '',
  30.                                  new_col_value,
  31.                                  SYSDATE,
  32.                                  NULL);
  33.    END LOOP;
  34. END;
  35.        
  36. new_col_value := CASE REC.COLUMN_NAME
  37.                        WHEN 'COLUMN_1' THEN :new.column_1
  38.                        WHEN 'COLUMN_2' THEN :new.column_2
  39.                        WHEN 'COLUMN_3' THEN :new.column_3
  40.                        ...
  41.                      END;