giovedì 27 dicembre 2012

Esempio di più operazioni in una store procedure


Il codice seguente è stato testato su di un database Oracle e mostra come si possono eseguire più operazioni in una store procedure puntando su diverse tabelle.
Ci sono esempi di select, update, delete, condizioni e loop.
Si possono portare le seguenti istruzioni anche su di un altro database modificando opportunatamente la sintassi.
(Non sempre vengono utilizzate le stesse istruzioni su db diversi).

CREATE OR REPLACE PROCEDURE TSP.procedure_example(
 typeMarket  IN varchar2,
 inDayMarket   IN varchar2
)

is

selectCursor    sys_refcursor;
rowToUpdate     TSP.tbl_market_1%ROWTYPE;

begin

-- example of condition and select on first table

 IF procedure_example.typeMarket='CONSUMER' THEN
 open selectCursor for
 SELECT TSP.tbl_market_1.*
 FROM TSP.tbl_market_1
 WHERE ((tbl_market_1.field_example_1 = 1);

-- loop example: update for all records of 'select' on second table

LOOP
 fetch selectCursor into rowToUpdate;
 exit when selectCursor%NOTFOUND;

 update  TSP.tbl_market_2 set
 field_example_3=10,
 where   TSP.tbl_market_2.id = rowToUpdate.id;

END LOOP;

close selectCursor;

END IF;

-- example update on first table

update   TSP.tbl_market_1 set field_example_2 = 0
where   day_market = procedure_example.inDayMarket
and     market_ref = procedure_example.typeMarket;

-- example delete on second table

delete   from TSP.tbl_market_2
where   day_market = procedure_example.inDayMarket;

end;