Posts mit dem Label JasperReports werden angezeigt. Alle Posts anzeigen
Posts mit dem Label JasperReports werden angezeigt. Alle Posts anzeigen

2018-12-10

JasperReports und REF_CURSOR

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!

2017-08-24

SQL "with"-Statements auf JasperServer

Möchte man in JasperReports with-Statements im Query verwenden, funktioniert das im Studio problemlos, deployed man den Report allerdings auf den Server liefert dieser beim Ausführen eine Security-Exception.

Hintergrund ist das Sicherheitskonzept des JasperServers, welches verhindern soll, dass etwa durch SQL-Injections Schaden an der Datenbank entstehen kann. Leider ist die Validator-Regel zunächst aber etwas zu restriktiv. Zum Glück kann man diese anpassen:

In der Datei

...\jasperserver\WEB-INF\classes\esapi\validation.properties

die Zeile

Validator.ValidSQL=(?is)^\\s*(select|call)\\s+[^;]+;?\\s*$

ersetzen durch

Validator.ValidSQL=(?is)^\\s*(select|call|with)\\s+[^;]+;?\\s*$ 

2016-02-23

TEAM After Work Knowledge - JasperReports und PL/SQL



Haben Sie sich schon immer die Frage gestellt: Wohin geht die Reise nach Oracle Reports? Wir auch - und haben uns in diversen Fallstudien mit verschiedenen Anbietern von Berichterstellungssoftware auseinandergesetzt.

Da wir wissen, dass nicht jeder die Zeit aufbringen kann, sich tagelang in alle Frameworks einzuarbeiten, haben wir bei TEAM eine neue Veranstaltungsreihe konzipiert. Das TEAM After Work Knowledge - kurz TAKE.

Ziel der Veranstaltungsreihe ist es, praktisches Wissen rund um Oracle Datenbanken und den damit verbundenen Themen Personen mit Entwicklerhintergrund zu vermitteln und das gelernte auch direkt anzuwenden.

Als Start in die Reihe wollen wir das oben beschriebene brisante Thema aufgreifen und den Workshop JasperReports und PL/SQL am 17.03.2016 bei TEAM in Paderborn durchführen. Man kann an den JasperReports Tutorials aus dem Internet schnell sehen, dass reine SQL Reports ohne große aufwände einfach erstellt werden können. Wenn man aber Berichte erstellt hat, bei denen Informationen über PL/SQL aus der Datenbank abgefragt werden, wird es mit den Basics ungleich komplexer.

An diesem Abend werden wir nach einer kurzen Einführung in JasperReports einen Weg aufzeigen, wie effektiv und einfach PL/SQL in JasperReports eingebunden werden kann.

Anschließend haben Sie die Möglichkeit, an Ihrem eigenen mitgebrachen Laptop im Rahmen einer Übung das Gelernte zu vertiefen. Natürlich wird zur geistigen Stärkung auch für das leibliche Wohl gesorgt.

Sollte Ihr Interesse geweckt sein:

TAKE "JasperReports und PL/SQL"
am Donnerstag, den 17. März 2016 bei TEAM
Beginn: 17:00 Uhr | Ende: 19:30 Uhr.
Die ausführliche Agenda und die Möglichkeit zur direkten Anmeldung finden Sie hier.


Wir freuen uns sehr auf ihr Kommen zu TAKE!