In vielen Reports zu JasperReports Migrationsprojekten werden die Daten per REF_CURSOR dem Report zur verfügung gestellt.
Wie diese Cursor in JasperReports verwendet werden möchte ich hier zeigen:
1. Die Beispiel-Routine in der Datenbank:
CREATE OR REPLACE PROCEDURE emps_holen(emp_cursor OUT sys_refcursor,anzahl in number) IS BEGIN OPEN emp_cursor FOR SELECT first_name,last_name,email FROM employees WHERE rownum < anzahl; END;
2. Report anlegen
als Platzhalter ein select * from dual
und speichern (Finish)
3. REF_CURSOR Aufruf einfügen
Wieder den Query-Editor öffnen
Language auf plsql umstellen und folgenden Code hinzufügen:
{ call emps_holen($P{ORACLE_REF_CURSOR},$P{anzahl}) }
Danach wieder den Dialog schließen
und neu öffnen. Durch das Schließen wird der Parameter automatisch angelegt.
Hinweis: Wenn man den Parameter von Hand anlegt, kommt beim Schließen eine Meldung, dass man einen eindeutigen Parameternamen eingeben soll. Um die Meldung zu vermeiden das Schließen und wieder Öffnen.
Nun können über Read Fields die Felder eingelesen werden.
Zur Demonstration wie man mit Parametern für die PL/SQL-Funktion umgeht legen wir den Zusätzlichen Parameter anzahl an, der an die PL/SQL-Prozedur übergeben wird.
Dann schließen wir den Query-Editor.
4. Report erstellen
Hier die Felder
(Wunderschönen) Report erstellen
Ausführen
Fertig!
Keine Kommentare:
Kommentar veröffentlichen