martedì 17 marzo 2009

[HOWTO] PL/SQL: cursore dinamico (con parametro)

Dato che in rete non avevo trovato nulla di veramente chiarificatore a riguardo, posto qualche riga di PL/SQL su come ho risolto il problema di fare un cursore dinamico. Il codice seguente ovviamente è una versione semplificata di quello che ho scritto realmente, ma è giusto per far capire il concetto..

visto che non è possibile dichiarare un cursore senza inizializzarlo, ho creato due cursori nel seguente modo:

CREATE OR REPLACE FUNCTION calcolaQualcosa RETURN NUMBER IS
  cursor categorie is select categoria from catalogo where;
  cursor prodotti(p_param varchar2) is select distinct prodotto from prodotti where categoria = p_param;
BEGIN
...


e all'interno del codice si usa semplicemente così::

for i in categorie loop
  for j in prodotti(i.categoria) loop
    dbms_output.put_line('Categoria: ' || i.categoria || 'Prodotto: ' || j.prodotto);
  end loop;
end loop;

Nessun commento: