43
Oracle9i PL/SQL Programmierung für die Versionen 9i, 8i und 7.x Bearbeitet von Hans Hajer, Scott Urman 1. Auflage 2002. Buch. XX, 586 S. Hardcover ISBN 978 3 446 21918 2 Format (B x L): 17,2 x 23,2 cm Gewicht: 1016 g Zu Inhaltsverzeichnis schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte.

Oracle9i PL/SQL Programmierung - ReadingSample · Oracle9i PL/SQL Programmierung für die Versionen 9i, 8i und 7.x Bearbeitet von Hans Hajer, Scott Urman 1. Auflage 2002. Buch. XX,

Embed Size (px)

Citation preview

Oracle9i PL/SQL Programmierung

für die Versionen 9i, 8i und 7.x

Bearbeitet vonHans Hajer, Scott Urman

1. Auflage 2002. Buch. XX, 586 S. HardcoverISBN 978 3 446 21918 2

Format (B x L): 17,2 x 23,2 cmGewicht: 1016 g

Zu Inhaltsverzeichnis

schnell und portofrei erhältlich bei

Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft.Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programmdurch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr

als 8 Millionen Produkte.

CARL HANSER VERLAG

Scott Urman

Oracle9i PL/SQL Programmierung für die Versionen 9i, 8i und 7.x

3-446-21918-8

www.hanser.de

22Entwicklungs- und

Laufzeitumgebungen

PL/SQL-Blöcke lassen sich aus verschiedenen Umgebungen ausführen, die jeweils ver-

schiedene Eigenschaften und Fähigkeiten besitzen. In diesem Kapitel diskutieren wir

die Stellen, an denen sich PL/SQL-Engines befinden. Außerdem besprechen wir ver-

fügbare Umgebungen für die Entwicklung von PL/SQL-Applikationen, und zwar so-

wohl die Oracle-Tools als auch Produkte von Fremdherstellern.

2.1 Applikationsmodelle und PL/SQLEine Datenbankapplikation lässt sich in drei Teile zerlegen:

� Die Benutzerschnittstelle Sie ist für das Look-and-Feel der Applikation verant-

wortlich. Diese Schicht behandelt die Eingabe des Benutzers und zeigt die Ausgabe

der Anwendung an.

� Die Anwendungslogik Steuert die Arbeit, die von der Applikation ausgeführt

wird.

� Die Datenbank Speichert nachhaltig und zuverlässig die Daten der Anwendung.

Für das Design einer Anwendung stehen zwei verschiedene Modelle zur Verfügung,

wobei den oben vorgestellten Elementen jeweils andere Standorte zugewiesen werden.

Um einen PL/SQL-Block zu kompilieren und auszuführen, muss er einer PL/SQL En-

gine übergeben werden. Ähnlich wie eine Java Virtual Machine besteht die PL/SQL En-

gine aus dem Compiler und dem Laufzeitsystem. Mit Entwicklungswerkzeugen, die von

Oracle und anderen Fremdherstellern angeboten werden, lässt sich PL/SQL in verschie-

denen Anwendungsebenen einsetzen. Und auch die PL/SQL Engines können sich an

unterschiedlichen Stellen befinden.

28 2 Entwicklungs- und Laufzeitumgebungen

2.1.1 Das Zwei-Ebenen-Modell

Das Zwei-Ebenen- oder Client-Server-Modell gilt beim Anwendungsdesign als tradi-

tionelle Variante. In diesem Fall besteht die Applikation aus zwei Elementen – dem

Client und dem Server. Der Client behandelt die Benutzerschnittstelle, während der

Server die Datenbank enthält. Die Anwendungslogik ist auf Client und Server verteilt.

Auf dem Server gibt es eine PL/SQL Engine, die in manchen Fällen auch auf dem Cli-

ent vorhanden ist.

PL/SQL im ServerPL/SQL ist im Datenbankserver seit der Oracle-Version 6.0 verfügbar, und der Server

ist auch der ursprüngliche Standort der PL/SQL Engine. Da der Datenbankserver auch

SQL-Anweisungen verarbeitet, kann man sowohl SQL-Anweisungen als auch

PL/SQL-Blöcke an die Datenbank senden und verarbeiten lassen. Eine Client-Appli-

kation, die entweder mit den Oracle-Entwicklungswerkzeugen oder mit den Tools von

Fremdherstellern geschrieben wurde, kann dem Server SQL-Anweisungen und

PL/SQL-Blöcke senden. SQL*Plus ist ein Beispiel für eine Client-Applikation, bei der

man in der SQL-Befehlszeile interaktiv SQL-Anweisungen und SQL-Blöcke eingibt,

die dem Server zur Ausführung übergeben werden.

Das folgende Beispiel zeigt eine interaktive SQL*Plus-Sitzung. Der Benutzer gibt den

Text am SQL>-Prompt ein. SQL*Plus schickt die Anweisung zur Ausführung an den

Server und zeigt das Ergebnis an. Die fett gedruckten Zeilen zeigen die angezeigten Er-

gebnisse. Die Syntax der PL/SQL-Blöcke und der SQL-Anweisungen (wie CREATE

OR REPLACE PROCEDURE) besprechen wir im weiteren Verlauf des Buchs.

-- Online verfügbar als SQL_PLSQL.sqlSQL> CREATE OR REPLACE PROCEDURE ServerProcedure AS

2 BEGIN3 NULL;4 END ServerProcedure;5 /

Procedure created.

SQL> DECLARE2 v_StudentRecord students%ROWTYPE;3 v_Counter BINARY_INTEGER;4 BEGIN5 v_Counter := 7;67 SELECT *8 INTO v_StudentRecord9 FROM students

10 WHERE id = 10001;1112 ServerProcedure;

2.1 Applikationsmodelle und PL/SQL 29

1314 END;15 /

PL/SQL procedure successfully completed.

SQL> UPDATE classes2 SET max_students = 703 WHERE department = ’HIS’4 AND course = 101;

1 row updated.

Hinweis:Auch das oben gezeigte Beispiel befindet sich auf der beiliegenden

CD-ROM. Beispiele auf der CD-ROM sind mit Kommentaren

wie -- Online verfügbar als xxx.sql gekennzeichnet,

wobei xxx.sql der Dateiname auf der CD-ROM ist. Eine

vollständige Beschreibung aller Online-Dateien finden Sie in

der Datei readme.html, die im code-Verzeichnis liegt.

Abbildung 2-1 verdeutlicht dieses Szenario. Die Client-Applikation (in diesem Fall

SQL*Plus) schickt dem Server einen PL/SQL-Block (mit prozeduralen und SQL-An-

weisungen, die einen Aufruf auf eine serverseitig gespeicherte Prozedur enthält) und

eine separate SQL-Anweisung. Beide werden über das Netzwerk an den Server versen-

det. Dort angekommen, wird die SQL-Anweisung direkt dem im Server enthaltenen

SQL Statement Executor übergeben, während der PL/SQL-Block an die PL/SQL Engi-

ne weitergereicht wird, die den gesamten Block parst. Die PL/SQL Engine führt die

prozeduralen Anweisungen (wie die Zuweisung und den Aufruf der gespeicherten

Prozedur) aus. Aber alle SQL-Anweisungen innerhalb des Blocks (wie die SELECT-

Anweisung) schickt sie an den gleichen SQL Statement Executor.

Die meisten Anwendungen, die PL/SQL einsetzen, nutzen die PL/SQL Engine auf dem

Server und nicht die clientseitige Engine. Eine typische Applikation (geschrieben in

Pro*C, JDBC, OCI oder einer anderen Programmiersprache) liegt auf dem Client und

schickt sowohl die SQL-Anweisungen als auch die PL/SQL-Blöcke an den Server. Ge-

nerell werden PL/SQL-Blöcke und SQL-Anweisungen auf dem gleichen Weg ver-

schickt. Allerdings wird bei PL/SQL-Blöcken zur Abholung der Werte für die Ausga-

bevariablen eine Verarbeitung benötigt. Für Information darüber, wie man die

PL/SQL-Blöcke aus einem bestimmten clientseitigen Tool übergibt, siehe die Oracle-

Dokumentation.

30 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-1: Die PL/SQL Engine auf dem Server.

PL/SQL auf dem ClientNeben der PL/SQL Engine auf dem Server bieten zwei Entwicklungswerkzeuge von

Oracle (Forms und Reports) eine PL/SQL Engine. Das Tool selbst läuft auf dem Client,

nicht auf dem Server. Das Gleiche gilt für die PL/SQL Engine. Beim clientseitigen

PL/SQL laufen die prozeduralen Anweisungen in den PL/SQL-Blöcken auf dem Client

und werden nicht an den Server verschickt. Zwischen client- und serverseitiger

PL/SQL Engine bestehen Unterschiede. Diese Tools nutzen PL/SQL-Blöcke einer cli-

entseitigen Applikation. Ein gutes Beispiel ist eine Forms-Anwendung mit Triggern

und Prozeduren. Sie werden auf dem Client ausgeführt und nur die enthalten SQL-

DECLARE v_StudentRecord students%ROWTYPE; v_Counter BINARY_INTEGER;BEGIN v_Counter := 7;

SELECT * INTO v_StudentRecord FROM students WHERE id = 10001;

ServerProcedure();

END;

Client-Applikation

UPDATE classes SET max_students = 70 WHERE department = 'HIS' AND course = 101;

Anonyme Blöckewerden zur

Verarbeitung als Ganzes an die PL/SQL

Engine auf dem Server geschickt.

ProzeduraleAnweisungen (inkl. der Aufruf an dieProzedur) werdenvon der PL/SQL

Engine verarbeitet.

Executor für prozeduraleAnweisungen

PL/SQL Engine

Über das Netzwerkverschickte Daten

Vom Clientverschickte SQL-

Anweisungengehen direkt zum

SQL Executor

Executor für SQL-Anweisungen

Oracle Datenbankserver

SQL-Anweisungen inPL/SQL-Blöckendurchlaufen die

PL/SQL Engine und gehen dann an den

SQL Executor.

2.1 Applikationsmodelle und PL/SQL 31

Anweisungen und Aufrufe an serverseitig gespeicherte Unterprogramme werden dem

Server zur Verarbeitung übergeben. Die lokale PL/SQL Engine auf dem Client verar-

beitet die prozeduralen Anweisungen (siehe Abbildung 2-2).

Abbildung 2-2: Die PL/SQL Engine auf dem Client.

DECLARE v_StudentRecord students%ROWTYPE; v_Counter BINARY_INTEGER;BEGIN v_Counter := 7;

SELECT * INTO v_StudentRecord FROM students WHERE id = 10001;

ServerProcedure();

END;

Client-Applikation

UPDATE classes SET max_students = 70 WHERE department = 'HIS' AND course = 101;

Anonyme Blöcke wer-den als Ganzes an dieClient-seitige PL/SQL Engine verschickt, diedie lokalen prozedu-ralen Anweisungen

verarbeitet.

Aufrufe an server-seitig gespeicherteProzeduren gehen

von der Client-seitigen an die

serverseitige PL/SQL Engine.

Executor für prozeduraleAnweisungen

Executor für prozeduraleAnweisungen

ServerseitigePL/SQL Engine

Client-seitigePL/SQL Engine

Über das Netzwerkverschickte Daten

Vom Clientverschickte SQL-

Anweisungengehen direkt zum

SQL Executor

Executor für SQL-Anweisungen

Oracle Datenbankserver

SQL-Anweisungen inPL/SQL-Blöckenlaufen von der Client-seitigen

PL/SQL Engine anden SQL Exectuor.

32 2 Entwicklungs- und Laufzeitumgebungen

Von der Applikation ausgegebene Stand-alone SQL-Anweisungen (die UPDATE-An-

weisung) werden, wie oben, direkt über das Netzwerk an den Executor für SQL-An-

weisungen verschickt. Die PL/SQL-Blöcke verarbeitet der Client jedoch lokal.

Alle prozeduralen Anweisungen (wie die Zuweisung) lassen sich ohne Netzwerkver-

kehr verarbeiten. SQL-Anweisungen in SQL-Blöcken (wie die SELECT-Anweisung)

werden an den SQL Executor geschickt und serverseitig gespeicherte Unterprogramme

werden der serverseitigen PL/SQL Engine übergeben

Oracle Precompiler Mit Hilfe der Oracle-Precompiler wie Pro*C/C++ und

Pro*COBOL lassen sich Anwendungen aufbauen, die PL/SQL im Server ausführen.

Diese Applikationen enthalten keine PL/SQL Engine. Damit werden die ausgegebenen

SQL- und PL/SQL-Anweisungen dem Server zur Verarbeitung übergeben.

Die Precompiler selbst enthalten jedoch eine PL/SQL Engine. Sie verifiziert während

der Vorkompilierung die Syntax und Semantik der anonymen Blöcke im Anwen-

dungscode.

2.2 Kommunikation zwischen EnginesIm Szenario in Abbildung 2-2 gibt es zwei separate PL/SQL Engines, die untereinander

kommunizieren. So kann beispielsweise ein Trigger in einem Formular (das im client-

seitigen PL/SQL läuft) einen in der Datenbank gespeicherten Prozess rufen (der im

serverseitigen PL/SQL läuft). Diese Kommunikationsart ist typisch für Remote-Proze-

duraufrufe. Ein ähnlicher Mechanismus wird für die Kommunikation über Daten-

bank-Links zwischen PL/SQL Engines auf verschiedenen Servern eingesetzt.

In dieser Situation können PL/SQL-Objekte in verschiedenen Engines voneinander

abhängen. Dieser Beziehungstyp funktioniert bis auf kleine Unterschiede wie bei

PL/SQL-Objekten in der gleichen Datenbank. Mehr zu diesem Thema in Kapitel 10.

2.2.1 Das Drei-Ebenen-Modell

Beim Drei-Ebenen-Modell bilden die Benutzerschnittstelle, die Anwendungslogik

und der Datenbankspeicher drei separate Teile. Der Client in diesem Modell ist typi-

scherweise ein Thin-Client, beispielsweise ein Browser. Die Anwendungslogik ist in ei-

ner einzigen Ebene eingebunden, auf dem Application Server. In dieser Umgebung be-

findet sich die PL/SQL Engine ausschließlich im Server. Applikationen für solche

Umgebungen sind üblicherweise besser skalierbar und unterstützen mehr Benutzer als

Anwendungen im Zwei-Ebenen-Modell. Zudem lassen sich solche Applikationen ein-

facher modifizieren, da man nur im Application Server und nicht bei allen Clients ein-

greifen muss.

2.2 Kommunikation zwischen Engines 33

Der Oracle Internet Application Server (IAS) ist ein vollständiger Application Server.

Durch die PL/SQL-Cartridge können Sie auf dem Server gespeicherte Prozeduren aus-

führen und die Ergebnisse als HTML-Seiten zurückliefern lassen. Erleichtert wird die-

se Vorgehensweise durch das PL/SQL Web Toolkit, das zum IAS gehört. Mehr Infor-

mationen zur PL/SQL-Cartridge und dem Web Toolkit finden Sie in der Oracle-

Dokumentation.

Hinweis:Bei Oracle9i laufen Forms- und Reports-Applikationen

ausschließlich in einem Drei-Ebenen-System und nicht

in einer klassischen Client-Server-Umgebung.

Abbildung 2-3: Das Drei-Ebenen-Modell.

Verbindung mit der DatenbankIm letzten Abschnitt sahen wir, dass PL/SQL- (und SQL-) Anweisungen zur Ausfüh-

rung generell zum Server verschickt werden. Zuerst muss man eine Verbindung zur

Datenbank aufbauen und eine Datenbanksitzung einrichten. Dazu müssen Sie sich bei

der Datenbank üblicherweise mit Benutzername und Passwort authentifizieren.

PL/SQL besitzt für die Verbindung mit der Datenbank oder zur Einrichtung einer Da-tenbanksitzung keine eigene Syntax. Das führt stattdessen die Umgebung aus, die einen

Executor für prozedurale Anweisungen

Serverseitige PL/SQL Engine

Executor für SQL-Anweisungen

Oracle DatenbankserverClient-Browser Application Server

PL/SQL WebCartridge

Der Client setzt Aufrufe an server-seitige Unterprogram-me ab, die eine HTML-Ausgabe generieren.

Die PL/SQL Cartridge agiert in Richtung Server als Client und schickt die auszuführenden PL/SQL-Blöcke und SQL-Anweisungen.

34 2 Entwicklungs- und Laufzeitumgebungen

PL/SQL-Befehl ausgibt. In SQL*Plus geschieht das beispielsweise mit dem connect-Befehl. Andere Tools besitzen für den Verbindungsaufbau mit der Datenbank eigeneMethoden, die wir in späteren Kapiteln vorstellen.

Das gilt auch für clientseitige PL/SQL Engines. Obwohl es keine Authentifizierungüber Benutzernamen und Passwort gibt, zeichnet die clientseitige Umgebung (wieOracle Forms) dafür verantwortlich, dass vor dem Versand eines PL/SQL-Blocks eineAuthentifizierung beim Server erfolgt.

2.3 Entwicklungswerkzeuge für PL/SQLSowohl Oracle als auch Fremdhersteller bieten für PL/SQL Entwicklungswerkzeuge

an. In diesem Abschnitt stellen wir diese Umgebungen in der gebotenen Kürze vor

(siehe Tabelle 2-1). Wie diese Tabelle zeigt, wird SQL*Plus zusammen mit der Daten-

bank angeboten. Die restlichen Tools kommen alle von Fremdherstellern. Testversio-

nen dieser Werkzeuge befinden sich auf der beigefügten CD-ROM. In den folgenden

Abschnitten stellen wir diese Tools vor.

Hinweis:Die Programme befinden sich auf der beigefügten CD-ROM im

Verzeichnis Development Tools. Mehr Informationen finden

Sie in der Datei readme.html im Root-Verzeichnis.

Aus Konsistenzgründen wurden die Screenshots in den folgenden Abschnitten immer

mit den gleichen Beispielobjekten gemacht. In allen Fällen laufen die Programme auf

einer Windows NT-Maschine, die mit einer Oracle9i-Datenbank auf einem Solaris-

Tabelle 2-1: Die Entwicklungsumgebungen für PL/SQL.

Tool Anbieter Web Site Auf der

CD-ROM?

SQL*Plus Oracle Corporation www.oracle.com Nein

Rapid SQL Embarcadero Technologies www.embarcadero.com Ja

DBPartner Compuware www.compuware.com Ja

SQL Navigator Quest Software www.quest.com Ja

TOAD Quest Software www.toadsoft.com oder

www.quest.com

Ja

SQL-Programmer BMC Software www.bmc.com Ja

PL/SQL Developer Allround Automations www.allroundautomations.nl Ja

2.3 Entwicklungswerkzeuge für PL/SQL 35

Ab Oracle9i

Server verbunden ist. Neben den Tabellen und Typen aus diesem Buch (siehe Kapitel

1) gibt es auch Beispiele für andere PL/SQL- und Java-Typen. Die folgende Tabelle

zeigt die Beispielobjekte für dieses Kapitel. Mit der Online-Datei setup.sql lassen

sich alle Objekte auf einmal anlegen.

2.3.1 SQL*Plus

SQL*Plus ist von den angebotenen Entwicklungswerkzeugen für PL/SQL vielleicht das

einfachste. Hier kann man an einer Befehlszeile interaktiv SQL- und PL/SQL-Anwei-

sungen eingeben. Diese Anweisungen werden direkt an die Datenbank geschickt und

die Ergebnisse zurückgeliefert. Es handelt sich um eine Entwicklungsumgebung mit

Zeichenmodus ohne PL/SQL Engine.

SQL*Plus wird zusammen mit dem Oracle Server ausgeliefert, und gehört zur Stan-

dardinstallation. Mehr Informationen zu SQL*Plus und den dazugehörigen Befehlen

finden Sie im SQL*Plus User’s Guide and Reference.

SQL*Plus-Befehle unterscheiden nicht zwischen Groß- und Kleinschreibung. Alle fol-

genden Befehle deklarieren Bind-Variablen:

SQL> VARIABLE v_Num NUMBERSQL> variable v_Char char(3)SQL> vaRIAbLe v_Varchar VarCHAR2(5)

Obgleich SQL*Plus eine zeichenbasierte Umgebung ist, gibt es in der Windows-Versi-

on einige GUI-Operationen. Sie dienen in erster Linie dem Verbindungsaufbau mit

der Datenbank und dem Setzen von SQL*Plus-Optionen, die auch im normalen Mo-

dus verfügbar sind. Für UNIX-Systeme steht keine GUI-Version zur Verfügung.

Zudem bietet Oracle9i eine Version von SQL*Plus, die sich in einem Browser ausfüh-

ren lässt. Diese Version namens iSQL*Plus bietet für die Eingabe eine SQL-Eingabe-

Objektname Objekttyp Auszuführendes Skript

Beispieltabellen und -typen Sequenzen, Tabellen, Typen tables.sql

AddNewStudent Prozedur ch09\AddNewStudent.sql

AlmostFull Funktion ch09\AlmostFull.sql

ModeTest Prozedur ch09\ModeTest.sql

ClassPackage Package ch09\ClassPackage.sql

Point Objekttyp ch12\Point.sql

SimpleClass Java-Source ch02\SimpleClass

36 2 Entwicklungs- und Laufzeitumgebungen

aufforderung. Die Ausgabe wird darunter angezeigt. iSQL*Plus bietet ähnlich wie die

Windows-Version einige GUI-Operationen (wie das Verbinden mit der Datenbank

oder das Lesen von Dateien). Für Hinweise zu Installation und Einsatz von iSQL*Plus

siehe die Oracle-Dokumentation.

Verbinden mit der DatenbankBevor Sie in SQL*Plus irgendwelche SQL- oder SQL*Plus-Befehle eingeben, ist eine

Verbindung zum Server herzustellen. Es gibt es folgende Möglichkeiten, dies durchzu-

führen:

� Durch Übergabe von Benutzerkennung und Passwort (und optional eines Con-

nect-Strings) in der Befehlszeile von SQL*Plus

� Mit Hilfe einer connect-Anweisung

� (Nur bei Windows und iSQL*Plus) Durch die Angabe von Benutzername, Pass-

wort und optional eines Connect-Strings im Dialogfeld Log On.

Wenn Sie, wie im folgenden Beispiel, kein Passwort angeben, fragt SQL*Plus nach und

zeigt die Eingabe nicht am Bildschirm an. Abbildung 2-4 zeigt das Dialogfeld Log On.

Abbildung 2-4: Das SQL*Plus-Dialogfeld Log On.

$ sqlplus example/exampleSQL*Plus: Release 9.0.1.0.0 - Production on Tue Oct 9 16:32:22 2001(c) Copyright 2001 Oracle Corporation. All rights reserved.

Connected to:Oracle9i Enterprise Edition Release 9.0.1.0.0 - ProductionWith the Partitioning optionJServer Release 9.0.1.0.0 - Production

SQL> exitDisconnected from Oracle9i Enterprise Edition Release 9.0.1.0.0 -ProductionWith the Partitioning optionJServer Release 9.0.1.0.0 - Production$ sqlplus exampleSQL*Plus: Release 9.0.1.0.0 - Production on Tue Oct 9 16:33:23 2001(c) Copyright 2001 Oracle Corporation. All rights reserved.

2.3 Entwicklungswerkzeuge für PL/SQL 37

Enter password:

Connected to:Oracle9i Enterprise Edition Release 9.0.1.0.0 - ProductionWith the Partitioning optionJServer Release 9.0.1.0.0 - Production

SQL> connect example/exampleConnected.SQL> connect example/example@V806_tcpConnected.

Ausführen von SQL und PL/SQLNach dem Start von SQL*Plus sehen Sie die Eingabeaufforderung SQL>. Hier geben Sie

die SQL- oder PL/SQL-Anweisungen ein, die an den Server zu übermitteln sind. Sie

können auch Befehle an SQL*Plus absetzen (wie den Befehl set serveroutput on).

Gibt man einen SQL-Befehl ein, ist er mit einem Semikolon oder einem Schrägstrich

abzuschließen. Das Semikolon gehört nicht zum Befehl, sondern grenzt ihn ab. Liest

SQL*Plus ein Semikolon, weiß es, dass der Befehl vollständig ist, und schickt ihn an die

Datenbank. Bei einem PL/SQL-Block gehört das Semikolon hingegen zur Blocksyntax

– er grenzt die Anweisung also nicht ab. Geben Sie die Schlüsselwörter DECLARE oder

BEGIN ein (was einen PL/SQL-Block einleitet), weiß SQL*Plus, dass jetzt ein PL/SQL-

Block und keine SQL-Anweisung auszuführen ist. SQL*Plus muss aber auch erfahren,

wann ein Block zu Ende ist. Dazu gibt man einen Schrägstrich ein, die Abkürzung für

den SQL*Plus-Befehl RUN. In SQL*Plus können Sie nach der Eingabe von run oder

eines anderen SQL*Plus-Befehls den Block auch mit einem Punkt beenden.

Abbildung 2-5: PL/SQL in SQL*Plus

38 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-5 zeigt einen PL/SQL-Block und eine SQL-Anweisung. Beachten Sie den

Schrägstrich nach dem PL/SQL-Block, der die registered_students-Tabelle ak-

tualisiert. Die SELECT-Anweisung nach dem Block benötigt keinen Schrägstrich, weil

ein Semikolon vorhanden ist. (Bei SQL-Anweisungen können Sie anstelle des Semiko-

lons auch einen Schrägstrich verwenden). Diese Abbildung zeigt auch die Ergebnisse

des Blocks (die Nachricht „successfully completed“) und der SELECT-Anweisung an

(die Daten aus der Tabelle).

Einsatz von DateienSQL*Plus kann aktuelle PL/SQL-Blöcke oder SQL-Anweisungen in einer Datei spei-

chern, die sich später erneut lesen und ausführen lässt. Diese nützliche Funktion be-

währt sich insbesondere bei der Entwicklung von PL/SQL-Programmen. So können

Sie beispielsweise einen CREATE OR REPLACE-Befehl in einer Datei speichern und

die Prozedur in der Datei ändern. Um die Änderungen in der Datenbank zu sichern,

lesen Sie die Datei einfach in SQL*Plus ein. Dateien können auch mehrere Befehle ent-

halten.

Der SQL*Plus-Befehl start liest eine Datei (entweder auf Platte, bei Oracle9i oder via

URL im Web). Egal, welcher Text sich in der Datei befindet – er ist an der Eingabeauf-

forderung einzugeben. Das @-Zeichen ist ein Kürzel für den start-Befehl. Nehmen

wir an, die Datei File.sql enthält folgende Zeilen:

-- Online verfügbar als File.sqlBEGIN

FOR v_Count IN 1..10 LOOPINSERT INTO temp_Table (num_col, char_col)

VALUES (v_Count, ’Hello World!’);END LOOP;

END;/

SELECT * FROM temp_table;

Diese Datei können wir am SQL-Prompt wie folgt starten:

SQL> @File

Die dazugehörige Ausgabe sehen Sie in Abbildung 2-6. Der Befehl set echo on (der

erste Befehl in der Abbildung) teilt SQL*Plus mit, dass beim Lesen der Datei deren In-

halte am Bildschirm anzuzeigen sind.

Tipp:Mit dieser Technik können Sie alle Beispiele im gesamten Buch

ausführen.

2.3 Entwicklungswerkzeuge für PL/SQL 39

Abbildung 2-6: Aus einer Datei lesen.

Das DBMS_OUTPUT-PackageBei PL/SQL gibt es keine eingebaute Ein- oder Ausgabefunktionalität. Das UTL_FILE-

Package (siehe Kapitel 12) bietet die Möglichkeit, von Dateien zu lesen und an diese

zu schreiben, was aber nichts mit der Ausgabe am Bildschirm zu tun hat. Um dies zu

korrigieren, kann SQL*Plus kombiniert mit dem DBMS_OUTPUT-Package einge-

setzt werden, und Bildschirmausgaben erzeugen. Dies erfolgt in zwei Schritten:

1. set serveroutput aktiviert die Ausgabe in SQL*Plus. Dieser Befehl hat folgen-

des Format:

SET SERVEROUTPUT {ON | OFF} [SIZE n]

wobei n die Größe des Ausgabepuffers ist. Gibt man für n nichts an, ist die Stan-

dardgröße 2.000 Bytes. Die maximale Größe beträgt 1.000.000 Bytes. Die Schlüs-

selwörter ON und OFF schalten die Ausgabe ein bzw. aus.

2. In Ihrem Programm setzen Sie die Prozedur DBMS_OUTPUT.PUT_LINE ein.

Diese fügt dem Ausgabepuffer ihr Argument hinzu.

Sind die Schritte ausgeführt, wird die Ausgabe am Bildschirm ausgegeben, allerdings

erst, nachdem SQL*Plus den Block beendet hat. Während der Ausführung wird der

Puffer von den DBMS_OUTPUT.PUT_LINE-Aufrufen gefüllt. SQL*Plus gibt die In-

halte des Puffers erst aus, wenn die Steuerung nach Beendigung des Blocks an SQL*Plus

zurückgegeben wird.

40 2 Entwicklungs- und Laufzeitumgebungen

Hinweis:DBMS_OUTPUT und UTL_FILE sind Packages. Mehr zum

Aufbau und Einsatz von Packages erfahren Sie in Kapitel 9,

Kapitel 10 und Anhang A.

Abbildung 2-7 zeigt einige Aufrufe an DBMS_OUTPUT.PUT_LINE.

Abbildung 2-7: Der Einsatz von DBMS_OUTPUT.

2.3.2 Rapid SQL

Rapid SQL von Embarcadero Technologies ist eine grafische Entwicklungsumgebung

mit folgenden Leistungsmerkmalen:

� Autoformatierung von PL/SQL- und SQL-Anweisungen

� Unterstützung für das Debugging von serverseitigen PL/SQL-Prozeduren

� Support für Java-Klassen und -Sourcen unter Oracle8i

� Zugriff auf die PL/SQL-Profilerdaten

� Planung von SQL-Jobs

� Projektmanagement

� Support für Windows Active Scripting

� Unterstützung einer Versionskontrolle von Fremdherstellern

Weitere Informationen zur Installation und zum Einsatz von Rapid SQL entnehmen

Sie bitte der Online-Hilfe.

Verbinden mit der DatenbankBeim ersten Start von Rapid SQL erhalten Sie einen Bildschirm ähnlich wie in Abbil-

dung 2-8. Mit dem Teilfenster auf der rechten Seite untersuchen Sie die Datenbankob-

jekte, die nach Datenbankquellen sortiert sind. Das Teilfenster rechts ist der Arbeitsbe-

reich, der während der Arbeit die verschiedenen Objekttypen anzeigt. Ein Datasource-

Datensatz protokolliert alle relevanten Informationen für eine Remote-Datenbank, wie

2.3 Entwicklungswerkzeuge für PL/SQL 41

Datenbanktyp, Benutzerkennung, Passwort und Verbindungsinformationen. Bei der

ersten Ausführung von Rapid SQL ermittelt das Programm automatisch die verfügba-

ren Datenquellen und durchsucht dazu die Oracle Net-Konfiguration Ihrer Maschine.

Ein Doppelklick auf die gewünschte Datenquelle öffnet ein Dialogfeld, in dem Sie für

die betreffende Verbindung die Benutzerkennung und das Passwort eingeben (siehe

Abbildung 2-9). Um neue Datenquellen hinzuzufügen und bestehende zu ändern, öff-

nen Sie das Datasource-Menü.

Abbildung 2-8: Das Hauptfenster von Rapid SQL.

Abbildung 2-9: Das Dialogfeld für den Verbindungsaufbau.

Falls gewünscht, speichert Rapid SQL für die betreffende Datenquelle den Benutzer-

namen und das Passwort. Sie können gleichzeitig mehrere Verbindungen offen halten.

42 2 Entwicklungs- und Laufzeitumgebungen

Ausführen von SQL und PL/SQLSQL- und PL/SQL-Blöcke lassen sich über einen SQL-Editor ausführen. SQL-Editoren

öffnet man über File | New | SQL. Ein SQL-Editor kann mehrere PL/SQL-Blöcke (sie en-

den mit einem /) und SQL-Anweisungen enthalten. Alle Anweisungen und Blöcke las-

sen sich mit einem Klick auf die Schaltfläche Execute ausführen (siehe Abbildung 2-10).

Abbildung 2-10: Ein SQL-Editor.

Die Ausgabe sehen Sie nach einem Klick auf das Result-Register (siehe Abbildung 2-11).

Das Ergebnis enthält PL/SQL-Ergebnisse (wie die erfolgreiche Ausführung) und die

Ausgabe von SQL-Anweisungen. Auch die Ausgaben von DBMS_OUTPUT.PUT_LINE

sind zu sehen.

2.3 Entwicklungswerkzeuge für PL/SQL 43

Abbildung 2-11: Die Ergebnistabelle.

Debugging-FunktionalitätenRapid SQL kann gespeicherte PL/SQL-Prozeduren, Funktionen und Trigger debuggen.

Gleiches gilt für anonyme Blöcke. Allerdings legt Rapid SQL zu diesem Zweck automa-

tisch eine serverseitige Prozedur mit dem Code des anonymen Blocks an. Mit dem De-

bugger können Sie Prozeduren schrittweise durchlaufen und die Werte der Variablen

im aktuellen Geltungsbereich sehen. Darüber hinaus sehen Sie stets den aktuellen Call

Stack und alle Abhängigkeiten. Eine Beispielsitzung der Funktion AlmostFull sehen

Sie in Abbildung 2-12.

44 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-12: Eine Debugging-Sitzung mit Rapid SQL.

Weitere Funktionalitäten von Rapid SQLNeben den bereits besprochenen Leistungsmerkmalen bietet Rapid SQL Folgendes:

� Objekt-Browser Mit ihm können Sie alle Objekte in einer gegebenen Datenquel-

le sehen. Die Objekte lassen sich über Eigentümer oder Typ sortieren. Damit kann

man sich die Objekte anzeigen lassen, die dem aktuellen Benutzer gehören.

� PL/SQL-Kompilierfehler Alle Fehler, die von einem PL/SQL-Block stammen,

werden automatisch angezeigt. Zu diesen Informationen gehören die vom Server

gemeldeten Zeilen- und Spaltennummern. Mit einem Klick auf die Fehlermel-

dung erreichen Sie die betreffende Stelle im Quellcode.

� PL/SQL Profiler-Zugriff Damit greifen Sie auf den PL/SQL Profiler zu (ab Ver-

sion Oracle8i), der laufende PL/SQL-Programme analysiert. Rapid SQL bietet eine

grafische Benutzerschnittstelle zur Einrichtung der Profiler-Tabellen, zum Starten

und Stoppen des Profilers und zur Analyse der Ausgabe.

� Scheduling-Optionen Bietet die Möglichkeit, Dateien und Jobs zu einem be-

stimmten Zeitpunkt auszuführen. Die Ergebnisse lassen sich in Dateien speichern

oder per E-Mail verschicken.

2.3 Entwicklungswerkzeuge für PL/SQL 45

� Verschiedene Bearbeitungsfenster Damit können Sie verschiedene Objekttypen

anlegen und verändern (auf Client und Server). Zu den Objekttypen gehören

SQL- und PL/SQL-Dateien, HTML- und Java-Dateien.

� Dienstprogramme zur Codegenerierung Sie generieren, basierend auf der Be-

nutzereingabe, automatisch den Code zur Ausführung von DDL-Operationen.

� Versionskontrolle Lässt sich mit ähnlichen Programmen von Fremdherstellern

integrieren, die Änderungen auf Ihre Dateien verfolgen.

2.3.3 DBPartner Debugger

DBPartner Debugger stammt von der Firma Compuware. Das Programm besitzt eine

grafische Schnittstelle, die unter anderem Folgendes bietet:

� Autoformatierung von PL/SQL- und SQL-Anweisungen

� Unterstützung für die Fehlersuche bei serverseitigen PL/SQL- und Java-Prozedu-

ren

� Unterstützung für Java-Typen unter Oracle8i.

� Unterstützung für Versionskontrollsysteme anderer Anbieter

DBPartner Debugger ist ein Produkt aus der Produkt-Suite von DBPartner. Andere

Komponenten enthalten den SQL Tuner und Viewer. Mehr Informationen zur Instal-

lation und zum Einsatz von DBPartner Debugger finden Sie in der Online-Hilfe.

Verbinden mit der DatenbankBeim ersten Start von DBPartner Debugger werden Sie nach einer Datenbankverbin-

dung gefragt. Sie können die Profile für verschiedene Verbindungen speichern, die je-

weils aus Benutzername, Passwort und einem Connect String bestehen. Gibt man die

Benutzerkennung als „Benutzerkennung/Passwort“ an, lässt sich auch das Passwort

speichern. Das Dialogfeld sehen Sie in Abbildung 2-13. Mehrere Verbindungen kön-

nen gleichzeitig aktiv sein.

Abbildung 2-13: Das Dialogfeld für die Verbindung zur Datenbank.

46 2 Entwicklungs- und Laufzeitumgebungen

Damit man mit DBPartner Debugger richtig arbeiten kann, sind serverseitig Vorarbei-

ten nötig. Dazu gehört die Einrichtung eines Datenbankbenutzers, der die für DBPart-

ner Debugger benötigten Informationen speichert. Diese Operationen lassen sich ent-

weder während oder nach der Installation erledigen. Bei diesen Arbeiten unterstützt

Sie der Database Setup Wizard (siehe Abbildung 2-14). Mit dem Assistenten kann

man serverseitige Objekte für mehrere Datenbanken installieren, deinstallieren oder

upgraden. Den Assistenten starten Sie über Database | Setup Wizard. Für die server-

seitige Installation benötigen Sie eine DBA-Verbindung. Weiterhin ist ein Datenbank-

benutzer anzulegen.

Abbildung 2-14: Der Begrüßungsbildschirm des Setup Wizard.

Ausführen von SQL und PL/SQLSQL- und PL/SQL-Anweisungen werden über ein SQL Notepad-Fenster ausgeführt,

das Sie mit File | New SQL Notepad öffnen. Ein SQL Notepad kann PL/SQL-Blöcke

und SQL-Anweisungen enthalten. Die Inhalte des Notepads schickt man dem Server

mit einem Klick auf die Schaltfläche Execute (siehe Abbildung 2-15). Die Ausgabe der

SQL-Abfragen wird in einem separaten Ausgabefenster angezeigt. Klickt man im un-

teren Teil des Notepad-Fensters auf das Register DBMS Output, sieht man die Ausga-

be von DBMS_OUTPUT.PUT_LINE (siehe Abbildung 2-16).

2.3 Entwicklungswerkzeuge für PL/SQL 47

Abbildung 2-15: Ein SQL Notepad-Fenster.

Abbildung 2-16: Das Register DBMS Output.

Debugging-FunktionalitätenDBPartner Debugger kann die serverseitigen Programme und anonymen Blöcke

schrittweise durchlaufen. Eine Debugging-Sitzung starten Sie entweder in der Menü-

leiste über File | New Debugger oder, indem Sie im Browser ein Objekt mit der rechten

Maustaste anklicken und aus dem Kontextmenü den Punkt Debug wählen. Sollte das

Objekt, das Sie gerade bearbeiten, Eingabeparameter übernehmen, fragt Sie DBPart-

ner Debugger nach den Eingabewerten und konstruiert für den Aufruf des Objekts mit

diesen Werten automatisch einen anonymen Block. Eine Beispielsitzung mit DBPart-

ner Debugger sehen Sie in Abbildung 2-17.

48 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-17: Eine Debugging-Sitzung mit PL/SQL.

Außer dem Debuggen von serverseitigen PL/SQL-Prozeduren lassen sich mit DBPart-

ner Debugger auch serverseitige Java-Prozeduren (ab Oracle8i) debuggen. Der De-

bugger geht automatisch in eine von der PL/SQL-Prozedur gerufene Java-Prozedur

(und umgekehrt). Dieses Leistungsmerkmal gibt es nur bei DBPartner Debugger. Eine

Beispielsitzung mit einer Java-Prozedur finden Sie in Abbildung 2-18.

Wird eine gegebene Prozedur von einer der Datenbanksitzungen ausgeführt, kann

DBPartner Debugger automatisch eine Debugging-Sitzung starten. Damit lassen sich

Applikationen untersuchen, die von anderen Maschinen, wie dem Applikation Server,

gestartet werden. Diese Option kann man auch für eine SQL-Anweisung oder

PL/SQL-Blöcke nutzen, die auf der gleichen Maschine gestartet werden, auf der auch

DBPartner Debugger installiert ist.

2.3 Entwicklungswerkzeuge für PL/SQL 49

Abbildung 2-18: Die Fehlersuche in Java.

Weitere Funktionalitäten von DBPartner DebuggerNeben den besprochenen Features bietet DBPartner Debugger noch folgende Leis-

tungsmerkmale:

� Objekt-Browser Mit ihm können Sie sich Objekte in der Datenbank ansehen,

die nach Objekttyp sortiert sind. Daneben sehen Sie auch die Data Dictionary-Ta-

bellen, auf die Sie Zugriff haben. Doppelklickt man ein Objekt, wird es zur Bear-

beitung geöffnet.

� Verschiedene Bearbeitungsfenster Damit lassen sich Informationen für den Ob-

jekttyp betrachten und bearbeiten, den Sie gerade modifizieren. DBPartner De-

bugger unterstützt Bearbeitungsfenster für SQL, Tabellen und Views. Ein Bearbei-

tungsfenster für SQL kann SQL-Anweisungen, PL/SQL-Blöcke oder Java-

Quelltexte ändern.

� Kompilierfehler für PL/SQL Alle Fehler aus der Kompilierung eines PL/SQL-

Blocks werden automatisch angezeigt. Gleichzeitig sehen Sie die vom Server ge-

meldeten Zeilen- und Spaltennummern. Klickt man auf die Fehlermeldung, errei-

chen Sie direkt die betreffende Zeile im Quellcode.

� Versionskontrolle Lässt sich mit ähnlichen Programmen von Fremdherstellern

integrieren, die Änderungen auf Ihre Dateien verfolgen.

50 2 Entwicklungs- und Laufzeitumgebungen

� Explain plan Generiert für die Ausgabe der SQL-Anweisungen automatisch ei-

nen Explain Plan.

� Andere Produkte Zur DBPartner Suite gehören zwei weitere Programme: der

SQL Tuner zur Analyse und zum Tuning von SQL-Anweisungen, und der SQL

Viewer, mit dem sich bestimmte SQL-Anweisungen und PL/SQL-Blöcke abfan-

gen und an den Debugger oder Viewer routen lassen.

2.3.4 SQL Navigator

SQL Navigator stammt von Quest Software und ist eine grafische Entwicklungsumge-

bung mit zahlreichen Funktionen:

� Autoformatierung von PL/SQL- und SQL-Anweisungen

� Unterstützung für das PL/SQL Debugging

� Datenbank-Browser

� Support für Oracle8-Objekttypen und Oracle8i-Typen

� Code Templates

� Unterstützung für Versionssysteme von Fremdherstellern

2.3.5 Verbinden mit der Datenbank

Ähnlich wie DBPartner Debugger fragt SQL Navigator beim ersten Start nach einer

Datenbankverbindung. Verbindungsprofile werden für den späteren Einsatz automa-

tisch gespeichert, das Passwort allerdings nicht. Das Dialogfeld für den Verbindungs-

aufbau sehen Sie in Abbildung 2-19. Sollten Sie sich beim Start mit keiner Datenbank

verbinden, erhalten Sie dieses Dialogfeld bei Öffnen eines Bearbeitungs- oder Brow-

ser-Fensters. SQL Navigator unterstützt gleichzeitig mehrere Verbindungen zu ver-

schiedenen Datenbanken.

Viele der Optionen in SQL Navigator erfordern, dass auf dem Server der Benutzer SQL-

NAV installiert wird. Der Server Side Installation Wizard unterstützt Sie beim Anlegen

der notwendigen Benutzer und Objekte. Diesen Assistenten kann man entweder bei der

Installation ausführen oder später über Tools | Server Side Installation Wizard starten.

Die serverseitige Installation wird zur Unterstützung von Explain plan, der Teampro-

grammierung, für die Versionskontrolle von Fremdherstellern und für den SQL Navi-

gator Tuner benötigt. Abbildung 2-20 zeigt den Begrüßungsbildschirm des Assistenten.

2.3 Entwicklungswerkzeuge für PL/SQL 51

Abbildung 2-19: Der Verbindungsdialog in SQL Navigator

Abbildung 2-20: Der Server Side Installation Wizard.

Abbildung 2-21: Ein SQL-Editorfenster.

52 2 Entwicklungs- und Laufzeitumgebungen

Ausführen von SQL und PL/SQLSQL- und PL/SQL-Anweisungen werden aus einem SQL-Editor ausgeführt. Ein gege-

benes Fenster kann entweder eine einzelne Anweisung oder ein vollständiges Skript

ausführen. PL/SQL-Blöcke in einem Skript sollten mit einem / schließen. Die Skripte

unterstützen auch Substitutionsvariablen (im Sinne von SQL*Plus). Innerhalb eines

Skripts können Sie eine einzelne Anweisung oder einen Teil des Skripts ausführen. Ab-

bildung 2-21 zeigt ein SQL Editorfenster mit dem direkt darunter befindlichen Ausga-

befenster. Die Ausgabe enthält das Ergebnis der einzelnen Anweisungen (falls es Abfra-

gen sind, werden die Daten angezeigt), und optional werden die SQL- oder PL/SQL-

Befehle wiederholt.

Falls Sie auch die Ausgabe von DBMS_OUTPUT.PUT_LINE sehen möchten, können

Sie die Ausgabe über die Schaltfläche Server Output ON oder über die Auswahl von

Tools | Server Output aktivieren. Ist die Option aktiviert, werden diese Informationen

in die anderen Inhalte des Ausgabefensters eingefügt (siehe Abbildung 2-22).

Abbildung 2-22: Die Ausgabe von DBMS_OUTPUT.PUT_LINE.

Debugging-FunktionalitätenUm ein PL/SQL-Programm schrittweise zu durchlaufen, ist der Debug-Modus einzu-

schalten. Dazu klicken Sie entweder auf die Schaltfläche Debug ON oder wählen im

Menü Debug | PL/SQL Debugging. Ist die Option aktiviert, öffnet sich bei Ausführung

2.3 Entwicklungswerkzeuge für PL/SQL 53

eines Block der Debugger, in dem Sie Variablen untersuchen, Watchpoints setzen und

den Code schrittweise durchlaufen können. Abbildung 2-23 zeigt eine Beispielsitzung.

Abbildung 2-23: Eine Debug-Sitzung.

SQL Navigator bietet darüber hinaus die Möglichkeit, sich mit einer separaten Sitzungzu verbinden und die dort ausgegebenen PL/SQL-Befehle zu untersuchen. Dazu ruftman DBMS_DEBUG unter Angabe eines gegebenen Sitzungsnamens, mit dessen HilfeSQL Navigator die Sitzung identifiziert.

Weitere FunktionalitätenNeben den bereits genannten bietet SQL Navigator noch folgende Funktionalitäten:

� PL/SQL-Profiler Ermöglicht das Ein- und Ausschalten des Profilings für ein ge-gebenes Programm und die Ansicht der Profiling-Daten. Der Profiling-Supportist nicht direkt in SQL Navigator eingebaut. Stattdessen gibt eine zusätzliche aus-führbare Datei, die für den Profiling-Support zu installieren ist. Einzelheiten dazuentnehmen Sie bitte dem Installationsprogramm.

� Datenbank-Navigator Erlaubt das Durchsuchen von Objekten in der Daten-bank. Der DB Navigator besitzt zahlreiche Filter, mit deren Hilfe sich die anzuzei-genden Objekte einschränken lassen (beispielsweise nach aktuellem Benutzer).Doppelklickt man ein Objekt, wird es für die Bearbeitung geöffnet. Diese Versiondes SQL Navigators unterstützt nicht das Bearbeiten von Java-Objekten, obgleichman sie kompilieren und mit dem Datenbank Navigator löschen kann.

54 2 Entwicklungs- und Laufzeitumgebungen

� Individuelle Bearbeitungsfenster Es gibt für Datenbankobjekte, inklusive Ta-

bellen, Views, SQL-Skripte, PL/SQL-Blöcke, gespeicherte Prozeduren, Trigger

und Rollen spezielle Bearbeitungsfenster. Diese Fenster bieten eine grafische

Schnittstelle, die basierend auf der Benutzereingabe den korrekten SQL-Befehl ge-

neriert.

� Query Builder Ermöglicht die grafische Selektion von Tabellen und Spalten

für Abfragen, inklusive der Eingabe der WHERE- und anderer Klauseln in die

SELECT-Anweisung. Mit dem Query Builder lassen sich auch automatisch DML-

Anweisungen generieren.

� PL/SQL-Fehler Sollte ein PL/SQL-Block bei der Kompilierung zu einer Fehler-

meldung führen, wird diese auch angezeigt, wenn Sie ein Objekt aus einem Editor

für gespeicherte Programme heraus kompilieren. Klickt man auf einen Fehler,

wird die betreffende Zeile im Quellcode markiert. Doppelklickt man einen Fehler,

öffnet sich ein Fenster, das die Ursache verrät und eine Aktion aus der Oracle-Do-

kumentation vorschlägt.

� Code Templates Der Code Assistant, den man über das Tools-Menü aktiviert,

bietet eine Bibliothek mit häufig genutzten PL/SQL- und SQL-Konstrukten. Mar-

kiert man ein bestimmtes Konstrukt, erscheint im Code Assistant Information-

Fenster eine Beschreibung. Doppelklickt man das Konstrukt, wird es in das aktu-

elle Bearbeitungsfenster kopiert, wo man es an die aktuellen Vorgaben anpasst.

� Explain Plan Ermöglicht für eine gegebene SQL-Anweisung das Abfangen und

Analysieren der Explain Plan Information.

2.3.6 TOAD

TOAD (Tool for Oracle Application Developers) wurde ursprünglich unabhängig von

SQL Navigator entwickelt, wird aber jetzt von Quest Software zusammen mit SQL Na-

vigator hergestellt. Deshalb bieten die beiden Produkte auch ähnliche Funktionalitä-

ten, inklusive des Lizenzierungsmechanismus. Dennoch gibt es einige Unterschiede,

die wir kurz vorstellen möchten:

� Die Autoformatierung von PL/SQL- und SQL-Anweisungen

� Die Unterstützung für das Debuggen von PL/SQL-Prozeduren

� Datenbank-Browser

� Support für Oracle8-Objekttypen und Oracle8i-Typen

� Code Templates

� Unterstützung für Versionskontrollsysteme von Fremdherstellern

2.3 Entwicklungswerkzeuge für PL/SQL 55

TOAD ist als Light-Version konzipiert, bietet aber dennoch eine leistungsfähige Ent-

wicklungsumgebung. Das Programm benötigt, im Vergleich zu den anderen vorge-

stellten Applikationen, weniger Platten- und Speicherplatz.

Verbinden mit der DatenbankTOAD kann gleichzeitig mehrere Datenbankverbindungen unterstützen. Beim ersten

Start des Programms werden Sie aufgefordert, mit Hilfe des Dialogfensters in Abbil-

dung 2-24 eine Verbindung aufzubauen. Weitere Verbindungen lassen sich im Menü

über den Befehl File | New Connection aktivieren. Nach dem Verbindungsaufbau

bleibt diese so lange aktiv, bis sie explizit über File | Close Connection geschlossen

wird. In den Verbindungsprofilen werden keine Passwörter gespeichert.

Abbildung 2-24: Der Verbindungsdialog von TOAD.

Eine wichtige Funktion von TOAD ist, dass sich die Verbindungen in den einzelnen

Fenstern dynamisch ändern lassen. Damit kann man gleichzeitig mit mehreren Ser-

vern arbeiten und die Anzahl der geöffneten Fenster auf ein Minimum beschränken.

Ausführen von SQL und PL/SQLSQL- und PL/SQL-Anweisungen werden aus einem SQL-Bearbeitungsfenster ausge-

führt. Ein gegebenes SQL-Fenster kann ein oder mehrere SQL-Anweisungen oder

PL/SQL-Blöcke enthalten, die sich einzeln oder als Skript ausführen lassen. Handelt es

sich bei der Anweisung um eine Abfrage, wird die Ausgabe in dem darunter befindli-

chen Fenster angezeigt (siehe Abbildung 2-25). Das Register Script Output im unteren

Teilfenster zeigt die Ausgabe bei Ausführung des gesamten Skripts. Im Fenster lassen

sich auch einzelne Anweisungen und Blöcke ausführen, indem man im oberen Teil des

Fensters auf die entsprechende Schaltfläche klickt.

56 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-25: Die SQL-Ausgabe.

Abbildung 2-26: Die Ausgabe von DBMS_OUTPUT.PUT_LINE.

2.3 Entwicklungswerkzeuge für PL/SQL 57

Im SQL-Bearbeitungsfenster kann man sich auch die Ausgabe von DBMS_OUTPUT.PUT_LINE, Statistiken und die Ausgabe von Explain Plan anzeigen lassen. Ähnlichwie beim SQL*Plus-Befehl SET SERVEROUTPUT ON muss man für die Ausgabevon DBMS_OUTPUT.PUT_LINE zuerst im Register DBMS Output die entsprechen-de Schaltfläche anklicken.

Debugging-FunktionalitätenEine gespeicherte Prozedur kann man debuggen, indem man entweder die Schaltflä-che Step Into anklickt oder in der Menüleiste Debug | Step Into wählt. Sämtliche Pa-rameter für die Prozedur sind zuerst im Dialogfeld Set Parameters zu setzen. Falls nö-tig, werden die Prozedur und abhängige Objekte vor dem Start der Debugging-Sitzungkompiliert. Beim Debuggen können Sie Breakpoints und Watchpoints setzen, und dieWerte der lokalen Variablen untersuchen (siehe Abbildung 2-27).

Abbildung 2-27: Eine Debugging-Sitzung in TOAD.

Weitere Funktionalitäten von TOADNeben den besprochenen Features bietet TOAD noch folgende Funktionen:

� Durchsuchen von Objekten TOAD bietet zwei verschiedene Datenbank-Brow-

ser: den Schema- und den Objekt-Browser. Der Schema-Browser ermöglich die

Auswahl von Objekten wie Tabellen, Prozeduren und Packages. An Stelle der be-

kannten Baumstruktur wählt man im Schema-Browser den Objekttyp über Regis-

ter aus, deren Inhalte im rechten Teilfenster zu sehen sind. Das rechte Teilfenster

58 2 Entwicklungs- und Laufzeitumgebungen

zeigt die Details zum Objekt an. In diesem Browser lassen sich Objekte auch kom-

pilieren und löschen. Der Objekt-Browser kann nur für Oracle8- und Oracle8i-

Datentypen und -Objekt-Bodies eingesetzt werden.

� Bearbeitungsfenster TOAD besitzt zwei Typen von Bearbeitungsfenstern: das

bekannte Bearbeitungsfenster für SQL und eines für gespeicherte Prozeduren. Wie

der Name schon sagt, bearbeitet man im SQL-Fenster einzelne SQL-Anweisungen

oder SQL-Skripte, während man mit dem anderen Bearbeitungsfenster gespei-

cherte Prozeduren, Funktionen, Packages und Trigger manipuliert. Aus dem Be-

arbeitungsfenster für gespeicherte Prozeduren können Sie die Prozeduren in der

Datenbank kompilieren, ausführen oder debuggen. Dieses Bearbeitungsfenster

lässt sich von Datenbankobjekten oder -dateien laden, oder zum Anlegen neuer

Objekte benutzt werden.

� Code Templates TOAD kann über Tastenkürzel automatisch PL/SQL- und

SQL-Konstrukte eingeben.

� DBA-Funktionen TOAD besitzt zahlreiche Funktionen für DBAs, wie die An-

sicht der Initialisierungsparameter der Datenbank und ein Export/Import-Pro-

gramm.

2.3.7 SQL-Programmer

Als Nächstes untersuchen wir den SQL-Programmer von BMC. Er unterstützt folgen-

de Funktionen:

� Autoformatierung von PL/SQL- und SQL-Anweisungen

� Das Debuggen für PL/SQL

� Datenbank-Browser

� Unterstützung von Oracle8-Objekttyp und Oracle8i-Objekten

� Code Templates

� Unterstützung für Versionskontrollsysteme von Fremdherstellern

� Skripte für Datenbankobjekte

Verbinden mit der DatenbankSQL-Programmer unterstützt gleichzeitig mehrere Verbindungen zu verschiedenen

Datenbanken. Das Dialogfeld Connection sehen Sie in Abbildung 2-28. In den Verbin-

dungsprofilen werden keine Passwörter gespeichert, aber Sie können für die verschie-

denen Server unterschiedliche Profile anlegen. Das Dialogfeld zeigt auch die aktuell ge-

öffneten Verbindungen.

2.3 Entwicklungswerkzeuge für PL/SQL 59

Abbildung 2-28: Das Dialogfeld Connection in SQL-Programmer.

Ausführen von SQL und PL/SQLDas Hauptfenster von SQL-Programmer ist für die Arbeit mit individuellen PL/SQL-

Objekten konzipiert. Klickt man auf ein bestimmtes Objekt, öffnet sich ein SPDW

(SQL-Programmer Development Window). Die einzelnen SPDWs haben in Abhän-

gigkeit vom jeweiligen Objekttyp verschiedene Funktionen. Abbildung 2-29 zeigt bei-

spielsweise die Prozedur AddNewStudent in einem SPDW. Deshalb lassen sich die

SQL- und PL/SQL-Befehle auch nicht direkt ausführen. Stattdessen legen Sie eine

Batch-Datei an, die aus verschiedenen, sequenziell auszuführenden Befehlen besteht.

Batch-Objekte lassen sich auch auf Servern speichern.

Um eine Prozedur aus einem SPDW heraus auszuführen, geben Sie zuerst die zu über-

gebenden Argumente ein (sofern vorhanden). Aus diesen Vorgaben baut SQL-Pro-

grammer einen Block auf, der die Prozedur ruft. Die Argumente für AddNewStudent

sehen Sie in Abbildung 2-30. Sollten Sie die Prozedur DBMS_OUTPUT.PUT_LINE

einsetzen, aktivieren Sie zuerst die Ausgabe und führen dann die Prozedur aus. Die Aus-

gabe finden Sie im Result-Register unterhalb des SPDWs.

60 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-29: Ein SPDW.

Abbildung 2-30: Die Argumente für AddNewStudent.

2.3 Entwicklungswerkzeuge für PL/SQL 61

Debugging-FunktionalitätenFür eine gegebene Prozedur aktivieren Sie das Debugging, indem Sie auf die Schaltflä-

che Step klicken oder aus in der Menüleiste Debug | Step wählen. Mit einer dieser bei-

den Aktionen starten Sie die Debuggig-Sitzung. Zum Setzen der Watch-Variablen zie-

hen Sie Variablen aus dem Code- ins Watch-Fenster. Den aktuellen Stack sehen Sie im

linken unteren Teilfenster (siehe Abbildung 2-31).

Abbildung 2-31: Eine Debugging-Sitzung.

Weitere Funktionalitäten von SQL-ProgrammerNeben den bereits besprochenen Features bietet SQL-Programmer noch folgende

Funktionen:

� Objekt-Browser Mit dem SQL-Explorer kann man durch die Datenbank blät-

tern und die Datenbankobjekte betrachten, die nach Schema und Objekttyp sor-

tiert sind. Ist mehr als eine aktive Verbindung vorhanden, lassen sich mit einem

SQL-Explorer die Objekte aus beiden Verbindungen betrachten.

� Kompilierfehler Sollten bei der Kompilierung einer Prozedur Fehler auftreten,

zeigt das SPDW die Fehler in einem eigenen Bereich unterhalb des Textes an. Dop-

pelklickt man einen bestimmten Fehler, wird im darüber liegenden Teilfenster der

relevante Code markiert.

62 2 Entwicklungs- und Laufzeitumgebungen

� Code Templates Falls Sie im SQL-Explorer ein neues Objekt anlegen, wird ihm

automatisch das passende Template zugewiesen. Die verfügbaren Templates las-

sen sich im Options-Menü vorgeben.

� Skripterstellung In der Skript-Schnittstelle kann man für alle Kombinationen

aus Datenbankobjekten Skripte anlegen. Dieses Skript enthält Code, mit dem man

die Objekte auf anderen Servern neu anlegen kann. Damit können Sie einzelne

Objekte oder Schemata zwischen Datenbanken kopieren.

2.3.8 PL/SQL Developer

Als Letztes untersuchen wir PL/SQL Developer von Allround Automations, der fol-

gende Funktionen bietet:

� Autoformatierung von PL/SQL- und SQL-Anweisungen

� Unterstützung für das Debugging von PL/SQL

� Datenbank-Browser

� Unterstützung für Oracle8i-Objekttypen und Oracle8i-Objekte

� Code Templates

� Unterstützung für Versionskontrollsysteme von Fremdherstellen (durch ein ex-

ternes Plug-in)

� Direkte Unterstützung für die meisten SQL*Plus-Befehle

Verbinden mit der DatenbankIn Abbildung 2-32 sehen Sie den Connection-Dialog von PL/SQL Developer. Verbin-

dungsprofile werden gespeichert, die Passwörter hingegen nicht. Mehrere Verbindun-

gen können gleichzeitig geöffnet sein, wobei ein Fenster nur eine einzige Verbindung

unterstützt. Das gilt auch für den Objekt-Browser. Eine neue Verbindung initiieren Sie

über die Auswahl von Session | Log. In Abbildung 2-33 sehen Sie das Hauptfenster von

PL/SQL Developer. Der Objekt-Browser befindet sich im linken Teilfenster, und den

Platz auf der rechten Seite belegen die verschiedenen Entwicklungsfenster.

Abbildung 2-32: Das Dialogfeld für den Verbindungsaufbau.

2.3 Entwicklungswerkzeuge für PL/SQL 63

Abbildung 2-33: Das Hauptfenster.

Ausführen von SQL und PL/SQLIn PL/SQL Developer bieten sich zur Ausführung von SQL- oder PL/SQL-Befehlen

verschiedene Möglichkeiten. Möchten Sie eine bestehende Prozedur ändern, selektie-

ren Sie diese im Objekt-Browser und wählen Edit, worauf sich ein Programmfenster

öffnet. Im SQL-Fenster geben Sie entweder einen einzelnen SQL-Befehl oder PL/SQL-

Block ein (ohne abschließenden Schrägstrich). Zum Schluss sehen Sie die Eingabeauf-

forderung SQL>, die neben verschiedenen PL/SQL Developer- auch SQL*Plus-Befeh-

le akzeptiert. Abbildung 2-34 zeigt ein SQL- und ein Befehlsfenster.

Die Ergebnisse von DBMS_OUTPUT.PUT_LINE sehen Sie entweder inline in einem

Befehlsfenster, oder wenn Sie in einem SQL-Fenster auf das Output-Register klicken.

Debugging-FunktionalitätenDas Debuggen einer gespeicherten Prozedur erfolgt in einem Testfenster. In diesem

Fenster geben Sie die Parameter an die Prozedur vor und starten das Debugging mit

einem Klick auf die Schaltfläche Start. Jetzt durchlaufen Sie das Programm, setzen Bre-

akpoints, sehen sich den Call Stack an und richten Watch-Variablen ein (siehe Abbil-

dung 2-35).

64 2 Entwicklungs- und Laufzeitumgebungen

Abbildung 2-34: Ausführungsfenster.

Abbildung 2-35: Eine Debugging-Sitzung.

2.3 Entwicklungswerkzeuge für PL/SQL 65

Weitere Funktionalitäten von PL/SQL DeveloperNeben den bereits erwähnten Features unterstützt PL/SQL Developer folgende Funk-tionen:

� Objekt-Browser Mit dem Objekt-Browser sehen Sie alle zugänglichen Datenban-kobjekte, für die benutzerdefinierte Filter definiert sind. Ein Objekt lässt sich be-arbeiten, löschen oder neu kompilieren.

� Code Templates Der Objekt-Browser bietet Templates, mit deren Hilfe sich au-tomatisch neue Datenbankobjekte generieren lassen (PL/SQL- und SQL-Typen).Ein Template fragt über eine grafische Schnittstelle die verschiedenen Optionenfür ein Objekt ab und legt am Ende das Objekt an.

� Unterstützung für Add-ins PL/SQL Developer unterstützt zahlreiche Plug-ins,die weitere Funktionen hinzufügen. Viele dieser Plug-ins finden Sie auf der Web-site von Allround Automations.

� Zugriff auf den PL/SQL Profiler Im Testfenster lässt sich das Profiling aktivie-ren. Nach einem Testlauf können Sie im Profiler-Register des Testfensters dieAusgabe für das Profil ansehen.

� Makroaufzeichnung Für häufig ausgeführte Befehle lassen sich Makros auf-zeichnen. Die dort hinterlegten Befehle werden bei Ausführung des Makros se-quenziell abgearbeitet.

� PL/SQL-Fehler Treten beim Kompilieren von PL/SQL-Blöcken Fehler auf, wirdim Quellcode automatisch die betreffende Stelle markiert. Mit einem Doppelklickauf den Fehler erhält man den dazugehörigen Fehlertext in der Oracle-Dokumen-tation.

66 2 Entwicklungs- und Laufzeitumgebungen

2.3.9 Zusammenfassung der Entwicklungswerkzeuge

Tabelle 2-2 fasst die Leistungsmerkmale der verschiedenen Entwicklungswerkzeugefür PL/SQL zusammen. Um herauszufinden, welches dieser Werkzeuge Ihre speziellenAnforderungen erfüllt, sollten Sie die Programme einfach durchtesten. Weitere Infor-mationen zu den einzelnen Tools entnehmen Sie bitte der jeweiligen Online-Hilfe.

Tabelle 2-2: Zusammenfassung der Entwicklungswerkzeuge für PL/SQL.

Funktion SQL*Plus Rapid SQL DBPartner SQL

Navigator

TOAD SQL-Pro-

grammer

PL/SQL

Developer

Verfügbarkeit Wird mit

Server

ausgeliefert

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Grafische

Umgebung

Nein Ja Ja Ja Ja Ja Ja

Objekt-

Browser

Nein Ja Ja Ja Ja Ja Ja

Code

Templates

Nein Ja Ja Ja Ja Ja Ja

Projekt-

management

Nein Ja Ja Nein Nein Nein Nein

Code-

formatierung

Nein Ja Ja Ja Ja Ja Ja

Job Scheduling Nein Ja Nein Nein Nein Nein Nein

Versions-

kontrolle

Nein Ja Ja Ja Ja Ja Verfügbar

mit zusätz-

lichen Plug-

ins

Unterstützung

von Java-

Typen für

Oracle8i

Ja Ja Ja Einge-

schränkt

Einge-

schränkt

Ja Ja

Serverseitige

Einrichtung

notwendig

Nein Nein Ja Ja Nein Nein Nein

Simultane

Verbindungen

Nein Ja Nein Ja Ja Ja Nein

2.4 Zusammenfassung 67

2.4 ZusammenfassungIn diesem Kapitel erörterten wir die verschiedenen Umgebungen, in denen sich PL/SQL

Engines befinden, und die passenden Applikationsmodelle. Weiterhin untersuchten

wir sechs verschiedene Entwicklungsumgebungen für den Aufbau von PL/SQL-Pro-

grammen. In Kapitel 3 beginnen wir mit der detaillierten Diskussion von PL/SQL.

Unterstützung

für PL/SQL-

Debugging

Nein Ja Ja Ja Ja Ja Ja

Unterstützung

für Java-

Debugging

Nein Nein Ja Nein Nein Nein Nein

Unterstützung

für PL/SQL

Profiler

Nein Ja Nein Ja, mit

zusätz-

licher

Installa-

tion

Nein Nein Ja

Dateitypen SQL &

PL/SQL

SQL,

PL/SQL,

Java &

HTML

SQL,

PL/SQL &

Java

SQL,

PL/SQL &

HTML

SQL &

PL/SQL

SQL &

PL/SQL

SQL,

PL/SQL &

Java

Tabelle 2-2: Zusammenfassung der Entwicklungswerkzeuge für PL/SQL. (Fortsetzung)

Funktion SQL*Plus Rapid SQL DBPartner SQL

Navigator

TOAD SQL-Pro-

grammer

PL/SQL

Developer

Verfügbarkeit Wird mit

Server

ausgeliefert

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft

Wird

separat

verkauft