Formazione - Esempi Oracle
Esempio di creazione di trigger per una semplice gestione di un campo contatore
che si basa sui valori presenti nel campo stesso (calcolando di volta in volta il massimo valore + 1).
create or replace trigger gest_cod_prog
before insert on <tabella>
for each row
declare
newid NUMBER;
begin
select max(<campo_id>) into newid from <tabella> ;
if (newid is null) then
newid:=0 ;
end if;
newid := newid + 1 ;
:new.<campo_id> := newid ;
end gest_cod_prog;
Esempio di creazione di trigger per una semplice gestione di un campo contatore
che si basa su una Sequence definita ad hoc.
create or replace trigger gest_cod_prog_S before insert on <tabella> for each row declare newid NUMBER; begin select SEQ_<tabella>_PKID.NEXTVAL into newid from DUAL ;
:new.<campo_id> := newid ; end gest_cod_prog_S;
Definizione della Sequence necessaria al funzionamento del trigger
create sequence SEQ_<tabella>_PKID
minvalue 0
maxvalue 99999999
start with 1
increment by 1
cache 20;
MODIFICA DATI SPAZIALI
Esempio di query per modificare il tipo dati spaziali di una tabella.
Attenzione!!!
Il seguente comando deve essere lanciato solo se si è sicuri che le geometrie contenute sono della tipologia che si sta inserendo:
update <nome_tabella> T
set
<nome_campo_geometria> = MDSYS.SDO_GEOMETRY(3002,null,null,T.GEOMETRY..SDO_ELEM_INFO,T.SDO_ORDINATES)
nell'esempio si sostituisce la struttura geometry del campo presente con una struttura uguale a quella presente eccetto che per:
primo argomento GTYPE che viene imposto a 3002
secondo argomento SRID (sistema di coordinate) che viene impostato a null
terzo argomento sdo_point scarsamente utilizzato in quanto le coordinate spesso vengono messe anche per i punti nell'oggetto sdo_ordinates.
08/10/2009