• Keine Ergebnisse gefunden

Oracle – XSQL in der Anwendung

N/A
N/A
Protected

Academic year: 2022

Aktie "Oracle – XSQL in der Anwendung"

Copied!
29
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Oracle – XSQL in der Anwendung

Thomas Matzke, 99IN

(2)

Inhalt

• Vorstellung von PLANet

• Kurze Einführung der XSQL – Technologie

• Was wird bei PLANet verwendet

•Erklärung der einzelnen Techniken

(3)

Vorstellung von PLANet

• Datenbankbasierte Planung von Lehrveranstaltungen als nutzerorientierte Intranet-Lösung

– Planer

– Professoren und Dozenten

• Erzeugung von Listen – Stundenblatt

– Dozentenblatt – Matrikelübersicht

• Auswertung und Statistiken

• Flexible Darstellung: HTML, PDF, Graphik, Excel ...

(4)

Browser

Servlet- Engine+

Server

Request an Server DB

Oracle-

Über XSQL-Skript Queries auf DB

Rückgabe eines Result-Sets

<?xml ver..

<rowset>

<row>

....

</row>

XML-Generierung aus Result-Set

<html>

<body>

HTML

PDF

10 8

9

SVG mit

XSL-Stylesheet Transformation in JDBC

XSQL-Technologie

(5)

XSQL-Technologie

Komponenten

• Datenbankserver: Oracle 8.1.6 i / 9.0.2.0.0i - Tablespace auf Oracle 8 in UTF-8

- Tablespace auf Oracle 9 in ISO-8859-1

• Web-Server: Tomcat 3.3 beta http://jakarta.apache.org

• XSQL-Servlet aus XDK 9.0.2.0.0D

(6)

XSQL-Technologie

Aufbau eines XSQL-Skripts

<?xml version = "1.0" encoding = "iso-8859-1">

<?xml-stylesheet type="text/xsl" href="uebersichthtml.xsl"?>

<datapage connection="xml" xmlns:xsql="urn:oracle-xsql">

<xsql:query rowset-element="FBIMN" row-element="DOZENT">

select name,vorname,email,telefon from dozent

</xsql:query>

</datapage>

XML-Header für Deutschland

Elemente- Bezeichnung für XML

Query

Alias für DB-Verbindung (xsqlconfig.jar)

(7)

XSQL-Technologie

(8)

Was wird bei PLANet verwendet

• Single / Multiple Parameters

• Insert, Update, Delete

- mit <xsql:xxxxx-request>

- als PL/SQL-Prozedur - als DML-Statement

• Session – Handling über <xsql:set-session-param>

• Nested Cursor

• FO

(9)

Erklärung der einzelnen Techniken

Insert mit <xsql:insert-request />

Pflicht-Parameter bzw. Attribute

• 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

(10)

Erklärung der einzelnen Techniken

Insert mit <xsql:insert-request />

Aufbau des Transformsheets

<?xml version = "1.0" encoding="iso-8859-1"?>

<ROWSET xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">

<ROW>

<TITEL><xsl:value-of select="titel"/></TITEL>

<VORNAME><xsl:value-of select="vorname"/></VORNAME>

<NAME><xsl:value-of select="name"/></NAME>

<FBEREICH><xsl:value-of select="fbereich"/></FBEREICH>

<ADRESSE><xsl:value-of select="adresse"/></ADRESSE>

</ROW>

</ROWSET>

Spaltenbezeichnungen GROSS schreiben

Elemente sind

Spaltenbezeichnung

(11)

Erklärung der einzelnen Techniken

Update mit <xsql:update-request />

Pflicht-Parameter

• table

• transform

• key-columns

- Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll

- Angabe mehrere Spalten möglich, Trennung durch Komma Pflicht-Parameter bzw. Attribute

(12)

Erklärung der einzelnen Techniken

Delete mit <xsql:delete-request />

Pflicht-Parameter

• table

• transform

• key-columns

- Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll

- Angabe mehrere Spalten möglich, Trennung durch Komma Pflicht-Parameter bzw. Attribute

(13)

Erklärung der einzelnen Techniken

Insert, Update, Delete mit <xsql:dml>

• 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

(14)

Erklärung der einzelnen Techniken

Insert, Update, Delete mit <xsql:include-owa>

• 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

(15)

Erklärung der einzelnen Techniken

Single / Multiple Parameter

• Parameter aus Formularen bzw. Session-Managment

• Parameter-Anzeige mit <xsql:include-request-params />

• Darstellung in XSQL(generiertes XML):

<datapage>

<rowset> ...<!--aus Query-->

</rowset>

<request>

<parameters>... </parameters>

<session>... </session>

<cookies>... </cookies>

</request>

</datapage>

(16)

Single / Multiple Parameters

- kann aus Textfeld, Listbox oder Radio-Button sein

<request>

<parameters>

<fachid>430</fachid>

</parameters>

</request>

Erklärung der einzelnen Techniken

(17)

Single / Multiple Parameters

- kann durch mehrere Checkboxes,Textfelder mit gleichem Namen entstehen

<request>

<parameters>

<row>

<fachid>430 </fachid>

</row>

<row>

<fachid>429</fachid>

</row>

<row>...

</row>

</parameters>

</request>

Erklärung der einzelnen Techniken

(18)

Erklärung der einzelnen Techniken

Zugriff auf Single / Multiple Parameter im XSQL-Skript

• Zugriff auf Single-Parameter mit {@name}

• 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

(19)

Erklärung der einzelnen Techniken

• Unterscheidung zwischen Single und Multiple-Parameters muss im Transform-Sheet implementiert werden

• Einsatz von <xsl:if> im Transformations-Stylesheet

• funktioniert auch bei Delete und Update

<xsql:insert-request> mit Single/Multiple-Parameters

(20)

<?xml version = "1.0" encoding="iso-8859-1"?>

<ROWSET xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">

<xsl:variable name="checkeiner" select="request/parameters/fachid"/>

<xsl:variable name="checkalle" select="request/parameters/row[last()]/fachid"/>

<xsl:if test="$checkeiner != 0 ">

<ROW>

<FACHID><xsl:value-of select="request/parameters/dozid"/></FACHID>

</ROW>

</xsl:if>

<xsl:if test="$checkalle != 0">

<xsl:for-each select="request/parameters/row">

<ROW>

<FACHID><xsl:value-of select="dozid"/></FACHID>

</ROW>

</xsl:for-each>

</xsl:if>

</ROWSET>

Erklärung der einzelnen Techniken

(21)

Erklärung der einzelnen Techniken

<xsql:query> 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 {@variable} läßt Multiple-Parameter nicht zu

• Lösung: Einsatz von Dummy-Tabellen

• Übergebene Parameter werden vor Ausführung der Query mit <xsql:insert-request> in Dummy-Tabelle gespeichert

• Parameter können dann mit Joins über Dummy-Tabelle verarbeitet werden

(22)

Erklärung der einzelnen Techniken

Session-Handling

• Speicherung der Session-Parameter in

<datapage>

<rowset> ...<!--aus Query-->

</rowset>

<request>

<parameters>... </parameters>

<session>... </session>

<cookies>... </cookies>

</request>

</datapage>

(23)

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

(24)

Erklärung der einzelnen Techniken

Session-Handling

• Zuweisung mit 'value', wenn Request-Parameter als Session-Parameter gesetzt

<xsql:set-session-param name="logged" value="{@login}"/>

• Zuweisung mit Query, wenn Parameter abhängig vom Request-Parameter aus der Datenbank bestimmt werden

<xsql:set-session-param name="logid">

select dozid from dozent where

name=(select name from nutzer where login='{@login}')

</xsql:set-session-param>

(25)

Erklärung der einzelnen Techniken

Nested XML - Cursor

• kann nur in <xsql:query> erzeugt werden

• aus Query wird eine XML-typische Hierarchie erzeugt

• macht Gruppierung nach Werten einfacher

• läßt sich beliebig tief schachteln

• siehe XSU-Skript Folie 45-49

(26)

Erklärung der einzelnen Techniken

FO - Formatting Objects

• Ausgabe von PDF über XSQL möglich

• Voraussetzung: - FO-Bibliotheken (fop.jar) http://xml.apache.org/fop - xsqlserializers.jar (XDK)

• Zugriff auf Processing Engine durch Zusatz-Attribut "serializer=FOP"

in Stylesheet-Definition

• zusätzliche Angabe des FO-Namespace in Stylesheet

(27)

<xsl:stylesheet

xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version="1.0"

xmlns:fo="http://www.w3.org/1999/XSL/Format" 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:

(28)

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet

xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version="1.0"

xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:version="1.0">

<xsl:template match="/">

<fo:root>

…<!-- FO-Tags-->

</fo:root>

</xsl:template>

</xsl:stylesheet>

Erklärung der einzelnen Techniken

FO - Formatting Objects

• FOP-Beispiel in XSQL-Beispielen von ORACLE

(29)

Erklärung der einzelnen Techniken

Generelle Probleme

• Umlaute

• Nullwertbehandlung in Querys

- Überprüfung ob Element leer, nicht möglich - siehe Überprüfung bei Multiple Parameters

• Speicherbegrenzung in FOP

• bei Änderungen am Datenmodell sehr viel Korrekturen nötig

Referenzen

ÄHNLICHE DOKUMENTE

- wenn Sie einen niedrigen Blutdruck haben oder mit zu wenig Flüssigkeit versorgt sind (Hypovolämie); dies sollte vor Beginn einer Behandlung mit Fentanyl TAD MAT 50

Der Regierungsrat betont, dass die Bevölkerung schweizweit und im Kanton Bern, gemäss den Prognosen des Bundesamtes für Statistik, auch weiterhin zunehmen wird.. Die

Präge dir das Bild gut ein, dann knicke das Blatt an der Mittellinie um.. Was hat sich in den einzelnen

Charakteristik nicht geeignet eingeschränkt geeignet gut geeignet Lage zu MThw &gt; 0,2m MThw.. &lt; -1,30m MThw -1,30m bis

Wenn die Datenbank, die per DBaaS erstellt wird, eine Test- datenbank sein soll, stellt sich die Frage, ob als Basis für das Service Template eine Produktivdatenbank herangezogen

Mai Gestalte heute in deinem Schulübungsheft eine Seite zum Thema Quadrat - suche dazu auch im Internet!. o Eine

• Verwenden Sie dieses Arzneimittel nicht, wenn Sie schwanger sind, wenn Sie versuchen schwanger zu werden oder wenn Sie eine Frau sind, die schwanger werden könnte und keine

Umso begrüßenswerter, dass die Bundesregierung nach anfänglichem Zögern jetzt ein Gesetzesvorhaben eingebracht hat, das auf die Rehabilitierung von Soldat*innen