• Web Header

E' spesso utile accedere ai dati contenuti in una vriabile XML TYpe, usando l' SQL come se fossero in una tabella o vista.

XML ha per sua stessa natura una struttura gerarchica. Di conseguenza viene facile pensare ad un file XML come a record di tabelle legate tra loro da relazioni master-detail.

Pensiamo ad un documento XML memorizzato nella colonna XML Type di una tabella Oracle:

<root> 
   <master id ='A'> 
    <info>First Header</info> 
      <detail> 
        <info>Detail 1</info> 
      </detail> 
      <detail> 
        <info>Detail 2</info> 
      </detail> 
   </master> 
   <master id = 'B'> 
      <info>Second Header</info> 
      <detail> 
           <info>Detail 3</info> 
      </detail> 
   </master>
</root>

Creeremo due viste ("dumb_master" e "dumb_detail") connesse da relazione master-detail relationship e popolate dai dati contenuti nell' XML Document della colonna dumb.dumber.

Tags: Oracle

Leggi tutto: Estrarre dati da un XML Type

Questo costrutto aggiorna ogni colonna di un record con i dati contenuti in un variabile difinita con ROWTYPE. Potrebbe quindi innescare lock delle chiavi di una foreign key.

DECLARE
  p_rec  t%ROWTYPE;
BEGIN
  ...
  p_rec.column_x := 'AA';
  p_rec.column_y := 'BB';
  ...
  UPDATE t
  SET ROW = trec
  WHERE column_z = 'CC';
  ....
END;

Info taken from http://psoug.org/reference/update.html

Tags: Oracle PL/SQL

A volte è necessario seguire del codice PL/SQL all'itnerno di un trigger, e questo pezzo di codice necessita di avere visione delle modifiche apportate ai dalla transazione all'interno della quale è stato lanciato il trigger stesso. Per esempio la sottomissione di una coda di lavoro, oppure il lancio di un report. All'interno dei trigger non è possibile, per ovvi motivi, eseguire un commit. Si otterrebbe l'errore oracle:

ORA-04091: table name is mutating, trigger/function may not see it

La soluzione è usare dbms_job.submit.

Leggi tutto: All' interno di un trigger, sottomettere PL/SQL DOPO il commit

© 2017 Mariella Colombo - P.Iva 05120920961