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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Apache - PHP - MySQL Apache-PHP-MySQL.
Datenbank-Zugriffsschnittstellen. © Prof. T. Kudraß, HTWK Leipzig Überblick Datenbankzugriff mit PHP Datenbankzugriff mit JDBC Datenbankzugriff mit PSP.
Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Internet-Datenbanken
Allgemeine Technologien II
Java 2 Enterprise Edition (J2EE)
FH-Hof Einbindung von JavaScript Anweisungen
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Spezielle Aspekte der Anbindung von Datenbanken im Web.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Anwendungen. © Prof. T. Kudraß, HTWK Leipzig Historie des WWW Grundlage Internet – Entwickelt Ende der 60er Jahre vom US-Militär (ARPA-Net) – Technische.
Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
Einführung XML XML Einführung Andreas Leicht.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Imperative Programmierung Funktionen und Parameter
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung MySQL mit PHP
Marcus Haller & René Schulze
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
GSI GSI Status Juni 2005 Michael Dahlinger, IT 14/6/2005.
Jetzt lernen wir.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Einführung Servlets/JSPs
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
Seminar Internet - Technologie
Die .NET Common Language Runtime
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
SQL Server 2005 CLR-Integration
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Dynamische Webseiten mit PHP [und Python]
Folgendes kann missbraucht werden: formulare unverschlüsselte login-informationen ungeschützte includes SQL-injection reto ambühler
CGI (Common Gateway Interface)
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Programmierprojekt Java Server Pages
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Java Server Pages Sergej Keterling
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Unterprogramme in JAVA
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
PHP PHP ( „PHP Hypertext Preprocessor") ist eine Skriptsprache
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
(Syntax, Strings/Zahlen, Variablen, Arrays)
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
1 JavaServer Pages Stephan Baldes JavaServer Pages Einführung
© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz.
Datenbanken
 Präsentation transkript:

Oracle PL/SQL Server Pages (PSP)

© 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

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

© 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

© 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;

© 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

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

© 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

© 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] %>

© 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; %>

© 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

© 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)

© 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

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

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

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

© Prof. T. Kudraß, HTWK Leipzig Parameterverarbeitung GET-Methode Beispiel: cust_order_items?ord_id=100&cust_id=100 cust_order_items?ord_id=100&cust_id=100 URL bei Submit:

© Prof. T. Kudraß, HTWK Leipzig Parameterverarbeitung POST-Methode Beispiel: cust_order_items cust_order_items URL bei Submit:

© 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)

© Prof. T. Kudraß, HTWK Leipzig Wiederverwendung von Seitenköpfen und -füßen Customer Help Customer Help WebStore Inc. 123 Main Street San Francisco, CA (415) <A WebStore Inc. 123 Main Street San Francisco, CA (415) <A Page Title... page body Page Title... page body Aufruf der Prozeduren

© 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;

© 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

© 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...

© 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:...

© 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!)

© 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

© 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

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

© 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

© Prof. T. Kudraß, HTWK Leipzig Ergebnis