Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Konversikan baris baru ke XML di dalam Oracle Trigger

Salah satu jebakan dalam pemicu adalah::new / :old sangat spesifik pemicu dan membosankan untuk ditangani. salah satu cara untuk mengatasinya adalah secara eksplisit membangun xmltype:

create or replace TRIGGER EVAL_CHANGE_TRIGGER
  AFTER INSERT OR UPDATE OR DELETE
  REFERENCING NEW AS NEW OLD AS OLD
  ON ResearchTable
DECLARE
  log_action  varchar(10);
  p_xmldata     XMLtype;
  p_newrowdata    clob;
BEGIN
    select XMLElement("ResearchTable", 
                   XMLElement("myColumn1", :NEW.myColumn1),
                   XMLElement("myColumn2", :NEW.myColumn2),
                   ....)
                   into p_xmldata from dual;
                   
   p_newrowdata:=p_xmldata.getClobVal();  
  
  IF INSERTING THEN
    log_action := 'Insert';
  ELSIF UPDATING THEN
    log_action := 'Update';
  ELSIF DELETING THEN
    log_action := 'Delete';
  ELSE
    DBMS_OUTPUT.PUT_LINE('This code is not reachable.');
  END IF;

 INSERT INTO auditsResearch (table_name, transaction_name, by_user, transaction_date,XMLDATA)
   VALUES('PROJ_TEST', log_action, USER, SYSDATE,p_newrowdata);
END;

Pembuatan xml sangat spesifik untuk tabel (karena :new - batasan), saya akan menggunakan beberapa pembuatan kode dengan menanyakan meta-data dari tabel target:

select 'XMLElement("'||cols.column_Name||'", :NEW.'||cols.column_name||'),'
 from SYS.ALL_TAB_COLS cols
where upper(cols.owner)=upper('MY_TARGET_SCHEMA')
and upper(cols.table_name)=upper('MY_TABLE')
order by column_id
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pisahkan File Teks/CSV Besar menjadi Beberapa File di PL SQL

  2. cara mengekspor data dari tabel log ke badan email di oracle

  3. Bagaimana saya bisa memasukkan ke dalam kolom BLOB dari pernyataan insert di sqldeveloper?

  4. pemicu edisi silang maju di R12.2

  5. RDLC LocalReport Ekspor ke Excel sangat lambat