Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, Thomas Matzke, HTWK Leipzig
Inhalt Vorstellung von PLANet Kurze Einführung der XSQL – Technologie Was wird bei PLANet verwendet Erklärung der einzelnen Techniken
Vorstellung von PLANet Datenbankbasierte Planung von Lehrveranstaltungen als Intranet-Lösung –Planer –Professoren und Dozenten Erzeugung von Listen –Stundenblatt –Dozentenblatt –Matrikelübersicht Auswertung und Statistiken Flexible Darstellung: HTML, PDF, Graphik, Excel...
Browser Servlet- Engine+ Server Request an Server DB Oracle- Über XSQL-Skript Queries auf DB Rückgabe eines Result-Sets <?xml ver XML-Generierung aus Result-Set HTML PDF SVG mit XSL-Stylesheet Transformation in JDBC XSQL-Technologie
Komponenten Datenbankserver: Oracle i / i - Tablespace auf Oracle 8 in UTF-8 - Tablespace auf Oracle 9 in ISO Web-Server: Tomcat 3.3 beta XSQL-Servlet aus XDK D
XSQL-Technologie Aufbau eines XSQL-Skripts select name,vorname, ,telefon from dozent XML-Header für Deutschland Elemente- Bezeichnung für XML Query Alias für DB-Verbindung (xsqlconfig.jar)
XSQL-Technologie
Was wird bei PLANet verwendet Single / Multiple Parameters Insert, Update, Delete - mit - als PL/SQL-Prozedur - als DML-Statement Session – Handling über Nested Cursor FO
Erklärung der einzelnen Techniken Insert mit Pflicht-Parameter table - Tabellenbezeichnung transform - Transformationsskript mit Spaltennamen - ermöglicht einfügen mehrerer Datensätze mit einem Aufruf - kann URL oder File sein Einsatzmöglichkeiten bei Formularen
Erklärung der einzelnen Techniken Insert mit Aufbau des Transformsheets … Spaltenbezeichnungen GROSS schreiben Elemente sind Spaltenbezeichnung
Erklärung der einzelnen Techniken Update mit Pflicht-Parameter table transform key-columns - Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll - Angabe mehrere Spalten möglich, Trennung durch Komma
Erklärung der einzelnen Techniken Delete mit Pflicht-Parameter table transform key-columns - Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll - Angabe mehrere Spalten möglich, Trennung durch Komma
Erklärung der einzelnen Techniken Single / Multiple Parameter Parameter aus Formularen bzw. Session-Managment Parameter-Anzeige mit Darstellung in XSQL:......
Erklärung der einzelnen Techniken Zugriff auf Single / Multiple Parameter im XSQL-Skript Zugriff auf Single-Parameter mit keine Pfadangaben, deswegen dürfen Session-Parameter und Request-Parameter nicht die gleiche Bezeichnung haben falls doch, hat Session-Parameter Vorrang Zugriff auf alle Multiple-Parameters nicht möglich nur erster Parameter wird erfasst
Single / Multiple Parameters - kann aus Textfeld, Listbox oder Radio-Button sein 430 Erklärung der einzelnen Techniken
Single / Multiple Parameters - kann durch mehrere Checkboxes,Textfelder mit gleichem Namen entstehen Erklärung der einzelnen Techniken
Insert, Update, Delete mit Element besteht aus SQL-Statement Statement darf nicht mit Semikolon abgeschlossen werden geeignet, wenn nur Single-Parameters verarbeitet werden eignet sich auch zum Ausführen von Programmblöcken Statements müssen mit 'begin und 'end eingeschlossen werden Nachteil bei Blöcken ist nicht eindeutige Fehlerausgabe
Erklärung der einzelnen Techniken Insert, Update, Delete mit Statements müssen in PL/SQL-Prozedur stehen Aufruf erfolgt durch Prozedur-Name hinter Prozedur-Name muss Semikolon stehen gut geeignet, wenn Parameter noch überprüft werden müssen
Erklärung der einzelnen Techniken mit Single/Multiple-Parameters Problem: unterschiedliche Parameterdarstellung für Single/Multiple-Parameters SINGLE MULTIPLE
Erklärung der einzelnen Techniken Unterscheidung zwischen Single und Multiple-Parameters muss im Transform-Sheet implementiert werden Einsatz von im Transformations-Stylesheet funktioniert auch bei Delete und Update mit Single/Multiple-Parameters
Erklärung der einzelnen Techniken
mit Single/Multiple-Parameters Query mit Multiple-Parametern kann bei Formularen mit mehreren gleichnamigen Checkboxes auftreten, wenn man z.B. Detailangaben über mehrere Sachen gleichzeitig haben möchte Art des Zugriffes auf Parameter mit läßt Multiple-Parameter nicht zu Lösung: Einsatz von Dummy-Tabellen Übergebene Parameter werden vor Ausführung der Query mit in Dummy-Tabelle gespeichert Parameter können dann mit Joins über Dummy-Tabelle verarbeitet werden
Erklärung der einzelnen Techniken Session-Handling Speicherung der Session-Parameter in......
Erklärung der einzelnen Techniken Session-Handling Sessionparameter müssen nur einmal gespeichert werden Sessionparameter mit gleichem Namen wie Requestparameter haben Vorrang im XSQL-Skript Sessionparameter lassen sich überschreiben Setzen von Parametern mit Wertzuweisung durch Attribut 'value' oder durch Query
Erklärung der einzelnen Techniken Session-Handling Zuweisung mit 'value', wenn Request-Parameter als Session-Parameter gesetzt Zuweisung mit Query, wenn Parameter abhängig vom Request-Parameter aus der Datenbank bestimmt werden select dozid from dozent where name=(select name from nutzer where
Erklärung der einzelnen Techniken Nested Cursor kann nur in erzeugt werden aus Query wird eine XML-typische Hierarchie erzeugt macht Gruppierung nach Werten einfacher läßt sich beliebig tief schachteln Grenze höchstens durch Rekursionstiefe von XSQL-Servlet Beispiel: Hierarchie Fachbereich, Studiengang, Semester, Fach Tiefe = 4
Erklärung der einzelnen Techniken Nested Cursor Gruppierung der Elementen durch "group by" in Query Cursor dürfen aber hinter "group by" nicht aufgeführt werden Cursor bekommen eine Bezeichnung für späteren Zugriff in XSL Beispiel: select f.fbereich, cursor (select fa.studiengang from faecher fa where fa.fbereich=f.fbereich group by fa.studiengang) as studgang from faecher f group by f.fbereich
Erklärung der einzelnen Techniken Probleme bei Nested Cursor Nullwertbehandlung (leere Unterbäume) - bei normalen Querys Angabe von Alternativ-Querys select fachid from faecher select 'vorlesung' from dual - bei Cursor Alternativ-Query nicht möglich - Möglichkeit: Weiterer Cursor auf gleicher Ebene, der eine Count-Query enthält, der die Result-Zeilen zählt
Erklärung der einzelnen Techniken FO - Formatting Objects Ausgabe von PDF über XSQL möglich Voraussetzung: - FO-Bibliotheken (fop.jar) - xsqlserializers.jar Zugriff auf Processing Engine durch Zusatz "serializer=FOP" in Stylesheet-Definition zusätzliche Angabe des FO-Namespace in Stylesheet
<xsl:stylesheet xmlns:xsl = " version="1.0" xmlns:fo=" xsl:version="1.0"> Erklärung der einzelnen Techniken FO - Formatting Objects Angabe des Namespace von XSLT-Engine nötig, da sonst nicht mit Templates gearbeitet werden kann Seitenrumpf sieht dann wie folgt aus:
<xsl:stylesheet xmlns:xsl = " version="1.0" xmlns:fo=" xsl:version="1.0"> … Erklärung der einzelnen Techniken FO - Formatting Objects FOP-Beispiel in XSQL-Beispielen von ORACLE
Erklärung der einzelnen Techniken Generelle Probleme Umlaute Nullwertbehandlung in Querys - Überprüfung ob Element leer, nicht möglich - siehe Überprüfung bei Multiple ParametersMultiple Parameters Speicherbegrenzung in FOP