Bedingung für Where-Klausel als Eingangsparameter

Hallo!
ich habe folgendes Problem. Also ich soll mit Hilfe von PL/SQL eine Funktion schreiben, die mir aus einer Tabelle ‚Buch‘ Datensätze liefert. Die Funktion stellt eine Select-Anfrage an die Datenbank, wobei die Bedingung in die Where-Klausel übernommen wird.

die Schnittstelle der Funktion:
Function listeBuecher (pBedingung VARCHAR2) – ok! Also ich werde dafür einen Cursor verwenden und hier liegt das Problem! die Funktion wird einwandfrei durchgeführt, wenn ich die Bedingung direkt in das Select-STatement schreibe, schreiben ich jedoch in die Where-Klausel pBedingung geht es leider nicht mehr.

CURSOR buecherListe (pBedingung VARCHAR2) IS
SELECT ISBN, titel, to_char(erscheinungsjahr, ‚0000‘) as jahr
FROM buch
WHERE pBedingung —> funktioniert nicht!
(WHERE ISBN=‚3643298043 Buch anschauen‘) —> funktioniert!
ORDER BY isbn;

Weiß vielleicht jemand von euch Experten, wie ich dieses Problem in den Griff bekomme! Viele Dank im Voraus für alle Antworten!
MfG Florian

wenn ich dein problem richig verstanden habe, willst du die gesammte where-klausel dynamisch erstellen - also per parameter übergeben. das funktioniert so nicht. du musst dafür mit dynamischen sql arbeiten. beispiele dafür findest du in der oracle-docu unter „native dynamic sql“. dort gibt es auch genug beispiele.

erwin

Hallo Florian,

du hast mit CURSOR buecherListe (pBedingung VARCHAR2) IS

SELECT ISBN, titel, to_char(erscheinungsjahr, ‚0000‘)
as jahr

aufgerufen, ändere das mal in
CURSOR buecherListe (pBedingung VARCHAR2) IS

SELECT ISBN, „’“ & titel, to_char & „’“ (erscheinungsjahr, ‚0000‘)
as jahr

Soweit ich weiss musst du die Werte in ’ angeben :smile:

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]