Avatar billede mach3 Nybegynder
11. marts 2008 - 13:02 Der 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.

Er der nogen som kan give mig et tip?

Mvh
Avatar billede arne_v Ekspert
12. marts 2008 - 04:01 #1
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.
Avatar billede mach3 Nybegynder
21. marts 2008 - 07:40 #2
Ok,

Jeg havde forventet at det var muligt at lave noget som ligner almindelig oo programmering lidt mere.

Lukker for nu. Giv et svar. Takker.
Avatar billede arne_v Ekspert
21. marts 2008 - 12:47 #3
ok
Avatar billede arne_v Ekspert
21. marts 2008 - 12:47 #4
Du ved godt at du kan skrive stored procedures i Java i Oracle ikke ?
Avatar billede mach3 Nybegynder
22. marts 2008 - 08:54 #5
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).

Men tak for hjælpen i hvert fald.
Avatar billede arne_v Ekspert
22. marts 2008 - 14:35 #6
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester