Zum Inhalt springen

probleme mit pl/sql


matze040184

Empfohlene Beiträge

hallo

ich habe folgendes problem.

ich habe ein paar tabellen angelegt um funktionen zu testen.

ich möchte gerne eine funktion schreiben, die mir alle filme eines bestimmten genres ausgibt (videoverleih).

grundlage:

- table genre (genre_id, genre_name)

- table film (film_id, film_name, genre_id(fk))

create or replace function fn_filme_genre(f_genre_id integer)

return varchar is

begin

declare

f_film varchar(50);

begin

select film_name

into f_film

from film

where genre_id = f_genre_id;

return f_film;

end;

end fn_film_genre;

/

so weit bin ich bis jetzt!

es kann ja ziemlich realitätsnahe sein das mehrere Filme zurückgegeben werden (jeweils so viele, wie in den einzelnen genre enthalten sind).

wie kann ich dir funktion umbauen, so dass ich mehrere werte über die funktion ausgeben kann???

ich hoffe mir kann jemand helfe.

schon mal vielen dank

gruß matze

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo

ich möchte gerne eine funktion schreiben, die mir alle filme eines bestimmten genres ausgibt (videoverleih).

es kann ja ziemlich realitätsnahe sein das mehrere Filme zurückgegeben werden (jeweils so viele, wie in den einzelnen genre enthalten sind).

wie kann ich dir funktion umbauen, so dass ich mehrere werte über die funktion ausgeben kann???

ich hoffe mir kann jemand helfe.

schon mal vielen dank

gruß matze

- Hallo, Ich würde PL/SQL immer in packages kapseln.

mal als Beispiel...Du musst evtl. die Attributsnamen ändern, habe es nur so aus dem Bauch erstellt...ausserdem fehlt natürlich das Exceptionhandling etc


CREATE OR REPLACE 

PACKAGE testapp.tst_film_pkg

IS

   PROCEDURE fn_filme_genre (

      i_nGenre_ID   IN       NUMBER,

      o_rcResult    OUT      SYS_REFCURSOR

   );

END;

/


CREATE OR REPLACE 

PACKAGE BODY testapp.tst_film_pkg

IS

   PROCEDURE fn_filme_genre (

      i_nGenre_ID   IN       NUMBER,

      o_rcResult    OUT      SYS_REFCURSOR

   )

   IS

      l_nGenre_ID   NUMBER;

   BEGIN

      l_nGenre_ID := i_nGenre_ID;


      OPEN o_rcResult FOR

         SELECT f.film

           FROM film f

          WHERE f.genre_id = l_nGenre_ID;

   END;

END;

/


Gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

kommt drauf an was Du genau machen möchtest. Schwebt dir so etwas vor?

select * from tst_film_pkg.fn_filme_genre(3)

Das geht nicht ganz so einfach. Dafür gibt es sog. PIPELINED FUNCTIONS in kombination mit Table Functions.

Allerdings wird diese Technik hauptsächlich für die Datentransformation eingesetzt.

Würde man das in deinem Fall verwenden, wäre es zusätzlich auch langsamer als ein normaler Select.

Verwendest Du ein Programm wie z.B. Java, dann kannst Du als OUT Parameter ein ResultSet übergeben, welches Du dann ganz normal abrufen kann.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

vielen dank für die schnelle antwort,

wie kann dich diese funktion aufrufen? ich komme mit diesen in/out parametern nicht klar. als in übergebegebe ich die id des jeweiligen genres und was ist mit out???

schon mal vielen dank!

gruß matze

- Von wo aus willst du die Procedure aufrufen ? Java ? PL/SQL ? SQL ? [irgendwas] ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...