Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.

Ähnliche Präsentationen


Präsentation zum Thema: "Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz."—  Präsentation transkript:

1 Oracle PL/SQL Server Pages (PSP)

2 © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz von PL/SQL-Anweisungen – Server-Side Scripting (Generierung der Seiten im DB-Server - nicht im Webserver) – Basiert auf PL/SQL Web Toolkit – Bestandteil von Oracle Application Server (OAS) und Oracle WebDB – Einbindung dynamischer Inhalte durch PL/SQL- Skripte, durch spezielle Tags gekennzeichnet

3 © Prof. T. Kudraß, HTWK Leipzig Einordnung in Oracle Application Server

4 © Prof. T. Kudraß, HTWK Leipzig Vorteile von PSP Trennung von Anwendungs- und Präsentationslogik – HTML-Anweisungen und PL/SQL Code separat – Abgrenzung durch PL/SQL-spezifische Tags Leichte Erlernbarkeit Einfacher Zugriff auf Daten der Datenbank Ausführung im Server Verbindung mit anderen Skriptsprachen möglich – z.B. Javascript oder Visual Basic-Script (zur Prüfung von Benutzereingaben) – nicht kombinierbar mit anderen serverseitigen Scripting- techniken

5 © Prof. T. Kudraß, HTWK Leipzig Web Toolkit vs. PSP CREATE OR REPLACE PROCEDURE home_page AS BEGIN htp.htmlOpen; htp.headOpen; htp.title(My home page); htp.headClose; htp.bodyOpen; htp.print (This is the home page of || user || generated on || sysdate ||.); htp.bodyClose; htp.htmlClose; END; CREATE OR REPLACE PROCEDURE home_page AS BEGIN htp.htmlOpen; htp.headOpen; htp.title(My home page); htp.headClose; htp.bodyOpen; htp.print (This is the home page of || user || generated on || sysdate ||.); htp.bodyClose; htp.htmlClose; END;

6 © Prof. T. Kudraß, HTWK Leipzig Entwicklung von PL/SQL Server Pages 1. Schreiben der PL/SQL Server Page Standard-Skripttag Spezielle Skripttags: - Pages - Prozeduren - Parameter - Deklarationen - Expression Blocks - Include - Kommentare 2. Kompilieren der PSP-Datei als Stored Procedure 3. Aufruf der PSP im Browser

7 © Prof. T. Kudraß, HTWK Leipzig Standard-Skripttag Funktion: Begrenzung von PL/SQL- Anweisungen Inhalt: beliebige PL/SQL-Statements, z.B. Prozeduraufrufe Syntax

8 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Page Direktive Funktion: Charakterisierung der PSP Attribute: – language: verwendete Skriptsprache (PL/SQL Standard) – contentType: Inhaltstyp der Seite; text/html Standard – errorPage: PSP-Seite, die auf auftretenden Fehlern aufgerufen wird (Standard: keine Datei) <% page [language=PL/SQL] [contentType=content type string] [errorPage=file.psp] %> <% page [language=PL/SQL] [contentType=content type string] [errorPage=file.psp] %> Syntax

9 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Procedure & Parameter Direktive Funktion: Spezifikation von Prozedur und Parameter (alles IN) Attribute: – procedure: Name des Prozedur – parameter: Name des Parameters – type: Datentyp des Parameters; Standardwert varchar2 (ohne Länge) – default: Standardwert für Parameter Syntax [type=PL/SQL datatype] [default=value] %> [type=PL/SQL datatype] [default=value] %>

10 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Declaration Direktive Funktion: Deklaration von Variablen und Cursor auf der ganzen Seite Beispiel: <%! PL/SQL declaration; [PL/SQL declaration;]... %> <%! PL/SQL declaration; [PL/SQL declaration;]... %> Syntax <%! cursor prod_cur is select * from products where price between minprice and´maxprice vc_name varchar2(200):=Peter; %> <%! cursor prod_cur is select * from products where price between minprice and´maxprice vc_name varchar2(200):=Peter; %>

11 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Expression Block / Print Direktive Funktion: Ausgabe eines beliebigen PL/SQL-Ausdrucks (String, Zahl, Ergebnis eines Funktionsaufrufs) Beispiel: Syntax oder The employee name is oder The employee name is

12 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Include Direktive Funktion: Einbinden des Quelltexts anderer Dateien in die Seite Beispiel: Syntax Anmerkungen: - Datei darf HTML- und PSP-Skriptelemente enthalten - Einbindung nur einmal zur Übersetzungszeit (mögliche Alternative: Einbindung durch Prozeduraufruf)

13 © Prof. T. Kudraß, HTWK Leipzig Spezielle Tags: Kommentare Funktion: erscheint nicht in der generierten Prozedur bzw. in den daraus erstellten HTML-Seiten Syntax Syntax Funktion: Kommentare, die in der HTML-Ausgabe erscheinen (normale HTML-Syntax) -- einzeiliger Kommentar /* mehrzeiliger Kommentar */ -- einzeiliger Kommentar /* mehrzeiliger Kommentar */ Syntax Funktion: Kommentare innerhalb eines PL/SQL-Blocks

14 © Prof. T. Kudraß, HTWK Leipzig Kompilieren der PL/SQL Server Page loadpsp [-replace] - user username/password[@connect_string] [include_file_name...] [... ] loadpsp [-replace] - user username/password[@connect_string] [include_file_name...] [... ] Syntax Beispiel loadpsp -replace - user name/passw@imnlehre timestamp.inc display_cust.psp loadpsp -replace - user name/passw@imnlehre timestamp.inc display_cust.psp Attribute: - replace: überschreibt Prozedur gleichen Namens - username/password@connect_string: Login-Information - include-file_name: Dateien, die mittels include eingebunden werden - page1...: Name der PSP-Dateien, die kompiliert werden sollen

15 © Prof. T. Kudraß, HTWK Leipzig Beispiel einer Generierung

16 © Prof. T. Kudraß, HTWK Leipzig Verarbeitung des Aufrufs

17 © Prof. T. Kudraß, HTWK Leipzig Parameterverarbeitung GET-Methode Beispiel: http://goliath.imn.htwk-leipzig.de:8080/WebDB/ cust_order_items?ord_id=100&cust_id=100 http://goliath.imn.htwk-leipzig.de:8080/WebDB/ cust_order_items?ord_id=100&cust_id=100 URL bei Submit:.........

18 © Prof. T. Kudraß, HTWK Leipzig Parameterverarbeitung POST-Methode Beispiel: http://goliath.imn.htwk-leipzig.de:8080/WebDB/ cust_order_items http://goliath.imn.htwk-leipzig.de:8080/WebDB/ cust_order_items URL bei Submit:.........

19 © Prof. T. Kudraß, HTWK Leipzig Hinweise zur Verwendung von PSP Trennung von Anwendungs- und Präsentationslogik – Berechnungen in eigenständiger Prozedur Einbinden zusätzlicher Dateien – Procedure Invocation = direkter Prozeduraufruf (bessere Berücksichtigung von Änderungen)

20 © Prof. T. Kudraß, HTWK Leipzig Wiederverwendung von Seitenköpfen und -füßen Customer Help Customer Help WebStore Inc. 123 Main Street San Francisco, CA 94021 (415) 123-4567 <A HREF="mailto:sales@webstore. WebStore Inc. 123 Main Street San Francisco, CA 94021 (415) 123-4567 <A HREF="mailto:sales@webstore. Page Title... page body Page Title... page body Aufruf der Prozeduren

21 © Prof. T. Kudraß, HTWK Leipzig Fehlerbehandlung - Beispiel create or replace procedure Show_Details ( Prod_ID in Number, Name out varchar2, Price out Number ) as as Prod_Name varchar2(30); Prod_Price Number; begin Select Name, Price Into Prod_name, Prod_Price From Products Where ID = Prod_id;... Name := Prod_Name; Price := Prod_Price; end; create or replace procedure Show_Details ( Prod_ID in Number, Name out varchar2, Price out Number ) as Prod_Name varchar2(30); Prod_Price Number; begin Select Name, Price Into Prod_name, Prod_Price From Products Where ID = Prod_id;... Name := Prod_Name; Price := Prod_Price; end;

22 © Prof. T. Kudraß, HTWK Leipzig Fehlerbehandlung - Verwendung von Errorpages erwartete vs. unerwartete Fehler erwarteter Fehler: NO_DATA_FOUND unerwarteter Fehler: 2 Produkte mit der gleichen ID Verwendung von ErrorPage in Page-Direktive zur Behandlung unerwarteter Fehler Nachteil: keine Parameterübergabe möglich (z.B. Fehlerzeitpunkt, Eingabeparameter) create or replace procedure Show_Details ( Prod_ID in Number, Name out varchar2, Price out Number ) as as Prod_Name varchar2(30); Prod_Price Number; begin Select Name, Price Into Prod_name, Prod_Price From Products Where ID = Prod_id;... Name := Prod_Name; Price := Prod_Price; end; EXCEPTION WHEN OTHERS THEN htp.init; error; END; -- error: Name der Fehlerseite

23 © Prof. T. Kudraß, HTWK Leipzig Benutzerdefinierte Ausnahmebehandlung (Exceptions) -- Angabe der Fehlerseite... l_exception EXCEPTION; -- Deklaration der Ausnahme l_exception... IF (TO_DATE(arrival_date,'YYYY-MM-DD') <= SYSDATE) THEN RAISE l_exception; -- Datum liegt vor dem aktuellem Datum END IF; EXCEPTION WHEN l_exception THEN -- Test, ob es der vom Benutzer ausgelöste Fehler ist RAISE; -- Weiterleitung des Fehlers an übergeordnete Fehler- END; -- behandlung in Error_Page... -- Ausgabe der Fehlermeldung -- wenn anderer Fehler, Ausgabe der Fehlermeldung...

24 © Prof. T. Kudraß, HTWK Leipzig Parameterübergabe > SELECT-Box wird durch Abfrage auf Tabelle Products mit Werten gefüllt, Zuordnung zum Parameter p_ID 2. Eingabeparameter: p_Text als Input-Feld in HTML-Formular Eingabe:...

25 © Prof. T. Kudraß, HTWK Leipzig Benutzeridentifikation Kundennummer eingeben: Beispiel: Anmeldung mit Kunden-Nr PSP der Startseite-Prozedur und alle nachfolgenden Prozeduren: Parameter für Kunden-Nr. Speicherung der Kunden-Nr. in verstecktem Feld, ermöglicht Weitergabe bei Abschicken des Formulars (nicht günstig bei komplexeren Anwendungen!)

26 © Prof. T. Kudraß, HTWK Leipzig Verwendung von Javascript keine Einschränkung gegenüber normalen HTML- Seiten clientseitige Skriptsprache – Test von Benutzereingaben vor Abschicken in die Datenbank Beispiel: – Prüfe bei Absenden des Formulars (onSubmit) durch Aufruf einer Javascript-Funktion (chkFormular), die True oder False zurückliefert – if TRUE Aufruf der PSP-Prozedur insertCheck – vergleiche Quellcode-Beispiel

27 © Prof. T. Kudraß, HTWK Leipzig Anzeige von Master-Detail- Beziehungen (Beispiel) Master/Detail-Text Darstellung einer Master-Detail-Beziehung in Frames Anzeige der Master-Datensätze: show_Master Anzeige der Detail-Datensätze: show_Detail

28 © Prof. T. Kudraß, HTWK Leipzig PSP des Master-Frames Master-Datasets " >

29 © Prof. T. Kudraß, HTWK Leipzig PSP des Detail-Frames Detaildatensätze Artikelname Preis Anzahl Bestellnummer Bestellstatus <% for item in (SELECT Order_ID, Order_Number, Order_Sign, Stat_ID, Stat_Desc, Prod_Name, Prod_Price FROM CustOrders, Status, Products WHERE ORDER_CUST_ID=p_Cust_ID AND Stat_ID (+)=Order_Status AND Order_Prod_ID=Prod_ID ORDER BY Prod_Name ) loop -- (+): Outer Join, um auch Bestellungen auszuwählen, die keinen Status haben%> PSP des Detail-Frames

30 © Prof. T. Kudraß, HTWK Leipzig Ergebnis


Herunterladen ppt "Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz."

Ähnliche Präsentationen


Google-Anzeigen