11. marts 2008 - 13:02Der er
5 kommentarer og 1 løsning
PL/SQL program struktur
Hej,
Jeg har programmeret en del objekt-orienteret, men PL/SQL er nyt for mig.
Jeg har noget sql som skal joines sammen med noget andet sql, men det meste af det er gentagelse. Derfor vil jeg gerne vide, om det er muligt i PL/SQL at lave noget ala
Begin call biler("ford") union all call biler("toyota") union all call biler("audi") End
Hvor "biler" er en funktion (i oo-termer) biler(string navn) { select bla bla bla join on bla bla osv... }
Det jeg ønsker er at kunne kalde en funktion (her ved navn biler) som jeg kan kalde igen og igen fra main (oo-term) og joine resultaterne sammen.
En googling finder noget der hedder pipelined table function.
CREATE TYPE t1_row_type AS OBJECT ( f1 INTEGER, f2 VARCHAR2(50) ); /
CREATE TYPE t1_table_type AS TABLE OF t1_row_type; /
CREATE FUNCTION get_interval_t1 ( first_f1 IN INTEGER, last_f1 IN INTEGER ) RETURN t1_table_type PIPELINED AS BEGIN FOR cur IN (SELECT f1,f2 FROM t1 WHERE f1 BETWEEN first_f1 AND last_f1) LOOP PIPE ROW(t1_row_type(cur.f1, cur.f2)); END LOOP; RETURN; END; /
(SELECT * FROM TABLE(get_interval_t1(1,2))) UNION (SELECT * FROM TABLE(get_interval_t1(7,8)));
virker hos mig - jeg regner med at du kan overføre til din kontekst.
Du mener at man skriver kode i java til at connecte og hente data fra Oracle (på traditionel vis)? Ja, det er jeg klar over, men lige nu er der ikke mulighed for at køre java (eller c# etc).
Skrive en stored procedure i Java som kører inde i Oracle.
Og det er en standard feature i Oracle (side 8i tror jeg).
Det er ikke meget brugt fordi Oracle folk som oftest foretrækker PL/SQL, men er man til klassisk OOP programmering, så er det da absolut en mulighed man skal overveje.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.