Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf...

36
Entwicklungsumgebung f¨ ur die Labor ¨ ubung VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut f ¨ ur Informationssysteme Technische Universit¨ at Wien 20.10.2008

Transcript of Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf...

Page 1: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Entwicklungsumgebung fur die LaborubungVL Datenbanksysteme

Ingo Feinerer

Arbeitsbereich Datenbanken und Artificial IntelligenceInstitut fur Informationssysteme

Technische Universitat Wien

20.10.2008

Page 2: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Uebung Server

I UebungI Secure ShellI Oracle DatenbankI Editoren auf Uebung

Page 3: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Uebung

I Adresse: uebung.dbai.tuwien.ac.atI Zugriff:

I Von ”uberall“ her moglich (z.B. Ubungsraume, andereRechner im TU-Netz, zu Hause, in der Firma, etc.)

I ausschließlich mittels Secure Shell (egal von wo aus)I Betriebssystem auf uebung: SUSE LinuxI Linux Kennung:

I Alle Ubungsteilnehmer erhalten nach der Anmeldung eineLinux Kennung mit Usernamen u<matrikelnummer>.

I Das Passwort entspricht dem Passwort imLVA-Betreuungssystem.

I Passwort andern: mit Linux-Befehl passwd. GeandertesPasswort nicht vergessen!

Page 4: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Secure ShellVon Windows-PC aus:

I ssh-Client (PuTTY) und scp-Client (PSCP):http://www.chiark.greenend.org.uk/

˜sgtatham/putty/download.html

I Liste von Alternativen: http://www.jfitz.com/tips/ssh_for_windows.html

Von Linux-PC aus:I ssh und scp sind ohnehin vorhandenI Bequemer Datentransfer: sftp mit Konquerer oder Nautilus

Einloggen auf Uebung bzw. File Transfer:

Beispiele

I ssh [email protected] scp bsp1.sql

[email protected]:abgabe1.sql

Page 5: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Oracle Datenbank auf Uebung

DB-Server auf Uebung:I Oracle 10g EE (Enterprise Edition)

DB-Benutzung:I Alle LVA-Teilnehmer erhalten eine eigene DB-Kennung in

der DatenbankI DB-Username: gleich wie Linux-UsernameI DB-Passwort: am Anfang gleich wie Linux-PasswortI DB-Passwort andern: mit SQL*Plus-Befehl Password.

Geandertes Passwort nicht vergessen!I Starten einer interaktiven Session: mit dem Kommando

sqlplus (im ssh-Fenster). Mittels DB-Username undDB-Passwort in DB einloggen.

Page 6: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Editoren auf Uebung

I emacs: Hilfe im Web, z.B. http://www.cs.indiana.edu/˜chaynes/c311/s95/emacs-help.html

I vi: Hilfe im Web, z.B. http://math.la.asu.edu/vi_tutorial/vicontents.html

I pico: Hilfe im Web, z.B. http://www.uic.edu/depts/accc/software/pine/pico.html

I Alternativen: Entwicklung von SQL und PL/SQL auf demlokalen PC und Upload nach Uebung mittels scp (odersftp).

Page 7: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL*Plus Einfuhrung

I BildschirmausgabeI SQL BufferI SQL*Plus Datei-Befehle

Page 8: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

BildschirmausgabeI Voraussetzung: SET SERVEROUTPUT ONI Package dbms output: Aufruf von PL/SQL aus:

Beispiele

dbms_output.put(’Hello World!’);dbms_output.new_line;dbms_output.put_line(’Hello World!’);

I Aufruf von SQL*Plus aus:

Beispiel

execute dbms_output.put_line(’Hello!’);

oder

BEGINdbms_output.put_line(’Hello!’);

END;/

Page 9: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

BildschirmausgabeZeilen/Seiten-Große:(maximum linesize: 32767, maximum pagesize: 50000)

Beispiele

SET LINESIZE 100SET PAGESIZE 1000

Spaltenformatierung

Beispiel

COLUMN matrnr FORMAT 99999COLUMN name FORMAT A10 WRAPPEDCOLUMN semester FORMAT 99SELECT ∗ FROM Studenten

MATRNR NAME SEMESTER------ ---------- --------24002 Xenokrates 1827550 Schopenhau 6

er

Page 10: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Buffer

I SQL*Plus speichert die Zeilen des letzten SQL Statementsin einem Buffer.

I Befehle zum Editieren der Buffer-ZeilenLIST Ausgabe aller Bufferzeilen3 Macht 3. Zeile zur aktuellenDEL Loscht die aktuelle ZeileAPPEND text text an aktuelle Zeile hangenCHANGE /old /new Ersetzt old durch newRUN (oder /) Ausfuhren des Statements

I Bemerkung: Bequemer ist das Arbeiten mit einem

”normalen“ Editor und Einlesen einer Datei mittels STARTBefehl.

Page 11: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL*Plus Datei-Befehle

I Wichtige SQL*Plus Befehle fur die Laborubung:

SPOOL datei Output wird in datei geschriebenSPOOL OFF Ende der Ausgabe in dateiSTART datei Fuhrt die Befehle aus datei aus

I Weitere Befehle:@ datei Abkurzung fur START dateiSAVE datei Speichert SQL Buffer in dateiEDIT Startet Editor zur Bufferbearbeitung

I Hilfe im Web: http://www.cs.rpi.edu/˜sibel/dbs/FALL2003/system_info/oracle/sqlplus_cmd.htm

Page 12: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Nutzliche Kommandos und Views

I KommandosI Views

Page 13: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Nutzliche Kommandos

Data Dictionary Information: DESCRIBE Befehl

Beispiele

DESCRIBE my tableDESCRIBE my viewDESCRIBE my package

Informationen uber den letzten Fehler (z.B. Kompilierfehler mitPL/SQL): SHOW ERRORS

Beispiele

SHOW ERRORS PROCEDURE ’ my procedure ’SHOW ERRORS FUNCTION ’ my funct ion ’

Page 14: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Nutzliche Views

I User ContstraintsI User ErrorsI User ObjectsI User ProceduresI User SequencesI User SourceI User TablesI User Tab ColumnsI User TriggersI User Views

Page 15: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Nutzliche Views: BeispieleUser Constraints:

Beispiel

DESCRIBE User Cons t ra in tsSELECT ∗ FROM User Cons t ra in ts WHERE

Table Name = ’VORLESUNGEN ’

Anmerkung: Tabellenname muss hier zwingend groß geschrieben werden.

User Tables, User Tab Columns:

Beispiel

SELECT Table Name FROM User TablesSELECT Column Name , Data Type , Data LengthFROM User Tab Columns WHERE Table Name = ’STUDENTEN ’

User Errors:

Beispiel

SELECT ∗ FROM User Errors

Page 16: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Nutzliche Views: BeispieleUser Objects:

Beispiel

SELECT DISTINCT o b j e c t t y p e FROM User ObjectsSELECT object name , s ta tus FROM User ObjectsWHERE o b j e c t t y p e = ’PROCEDURE ’

User Triggers:

Beispiel

SELECT t r igger name FROM User Tr iggers

User Source:

Beispiel

SELECT t e x t FROM User SourceWHERE name = ’MY TRIGGER ’ ORDER BY l i n e

Page 17: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Freie Oracle Tools

I Oracle 10g XEI Oracle SQL DeveloperI Oracle JDeveloper

Page 18: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Uberblick

Oracle 10g XE (Express Edition)I Download: http://www.oracle.com/technology/products/database/xe/

Oracle SQL DeveloperI Hat einen PL/SQL Source Code DebuggerI Download: http://www.oracle.com/technology/products/database/sql_developer/

Oracle JDeveloperI Hat eine Entwicklungsumgebung fur PL/SQL, Java und

viele weitere Sprachen.I Download: http://www.oracle.com/technology/software/products/jdev/

Page 19: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Oracle 10g XE

I Fur Linux und Windows erhaltlichI Funktionsumfang:

I Ahnlich wie die kommerziellen Versionen (zumindest wieSE1 und SE) von Oracle 10g, z.B.: SQL, PL/SQL, undJDBC

I Wesentliche Einschrankung: Ressourcen, z.B.: 4GBHarddisk, 1GB RAM, 1 CPU, Anzahl der DB-User, . . .

I Weitere Einschrankungen, z.B.: Tools, Performance Tuning,Backup/Recovery Optimierungen, . . .

I Zielgruppen:I PHP- und Java-Entwickler (Konkurrenz fur MySQL)I Universitaten, etc.

Page 20: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Oracle SQL Developer

I Plattformunabhangig: ist eine Java ApplikationI Features:

I GUI fur SQL und PL/SQL EntwicklungI Nutzlich fur Laborubung: PL/SQL Source Code Debugger

I Einrichten einer Verbindung:I Sowohl lokal (zu Oracle 10g XE auf dem eigenen PC) als

auch zu uebung moglichI Verbindungsparameter wie bei JDBC, z.B.:

hostname: localhostport: 1521SID: XE

Page 21: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Oracle JDeveloper

I Plattformunabhangig: ist eine Java ApplikationI Machtiges Tool mit Entwicklungsumgebung fur mehrere

Sprachen, z.B.:I PL/SQL (wie Oracle SQL Developer)I JavaI XML-Entwicklung (XML Schema, XSLT)I Web Service EntwicklungI Visueller Editor fur HTML, JSP, . . .

I Bemerkung: Fur die DB-Systeme Laborubung lohnt sichder Einarbeitungsaufwand vermutlich nicht.

Page 22: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

Beispiel

I SQL StatementI PL/SQL Prozedur

Page 23: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Statement

Beispiel

Suche die Namen jener Studenten, die alle 4-stundigenVorlesungen gehort haben.

I Ersetzung von ”for all“ durch ”exists“:Suche die Namen jener Studenten, fur die nicht gilt: Esgibt eine 4-stundige VO, fur die nicht gilt: der Student hatdiese VO gehort.

I Geschachteltes SQL-Statement erstellen: ”schrittweise“von innen nach außen.

Page 24: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Statement

Innerstes SELECT:I Wahle MatrNr eines beliebigen Studenten sowie

Vorlesungsnummer einer beliebigen Vorlesung:

SELECT ∗ FROM hoeren ORDER BY Vor lNrSELECT MatrNr FROM studentenSELECT DISTINCT MatrNr FROM hoeren

z.B., wahle MatrNr 26120 und VorlNr 5001I SELECT Statement (in Datei test1.sql editieren):

SELECT ∗ FROM hoeren hWHERE h . Vor lNr = 5001 AND h . MatrNr = 26120

I Datei einlesen und ausfuhren in SQL*Plus:START test1.sql

Page 25: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Statement

Mittleres SELECT:I Gesucht: Informationen uber alle 4-stundigen Vorlesungen,

die von einem bestimmten Studenten (z.B. wieder derStudent mit MatrNr 26120) nicht gehort wurden.

I SELECT Statement (in Datei test2.sql editieren):

SELECT ∗ FROM Vorlesungen vWHERE v .SWS = 4 AND NOT EXISTS

(SELECT ∗ FROM hoeren hWHERE h . Vor lNr = v . Vor lNrAND h . MatrNr = 26120)

I Datei einlesen und ausfuhren in SQL*Plus:START test2.sql

Page 26: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Statement

Außeres SELECT:I Gesucht: Informationen uber Studenten, fur die es keine

4-stundigen Vorlesungen gibt, die von diesen Studentennicht gehort wurden.

I SELECT Statement (in Datei abgabe bsp1.sql editieren):

SELECT ∗ FROM Studenten sWHERE NOT EXISTS

(SELECT ∗ FROM Vorlesungen vWHERE v .SWS = 4 AND NOT EXISTS

(SELECT ∗ FROM hoeren hWHERE h . Vor lNr = v . Vor lNrAND h . MatrNr = s . MatrNr ) )

I Datei einlesen und ausfuhren in SQL*Plus:START abgabe bsp1.sql

Page 27: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

SQL Statement

Bemerkung:Durch INSERTs und DELETEs die Testdaten so andern, dassdie Anfrage zumindest 2 bis 3 Tupel liefert, z.B. (vgl. Dateitest4.sql):

INSERT INTO hoeren VALUES (24002 ,4052)INSERT INTO hoeren VALUES (24002 ,4630)INSERT INTO hoeren VALUES (24002 ,5001)INSERT INTO hoeren VALUES (24002 ,5041)

Page 28: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Gesucht: Prozedur, die den Namen und dieSemesteranzahl des Studenten mit den meistenSemestern ausgibt.

I Mogliche Vorgangsweise:I Entwicklung mittels ”normalem“ EditorI Am Anfang: nur Prozedur-Kopf und ”NULL“-BodyI

”Schrittweise“ den Body hinzufugenI Nach jedem Schritt kompilieren. Kompilierfehler mittels

SHOW ERRORS und User Errors View suchen.I

”Test-Treiber“ erstellenI Bildschirmausgaben mittels dbms output Paket zwecks

Fehlersuche

Page 29: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Datei versuch1.sql:

CREATE OR REPLACE PROCEDURE p sem max( l name OUT VARCHAR2, l sem OUT NUMBER) ASBEGIN

NULL ;END ;/

I Einlesen und Kompilieren: START versuch1.sql

Page 30: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Datei versuch2.sql:

CREATE OR REPLACE PROCEDURE p sem max( l name OUT VARCHAR2, l sem OUT NUMBER) ASCURSOR c s tuden t ISSELECT ∗ FROM Studenten s ;BEGIN

FOR rec s tuden t IN c s tuden t LOOPNULL ;

END LOOP;END ;/

I Einlesen und Kompilieren: START versuch2.sql

Page 31: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

Datei versuch3.sql:

CREATE OR REPLACE PROCEDURE p sem max( l name OUT VARCHAR2, l sem OUT NUMBER) ASCURSOR c s tuden t ISSELECT ∗ FROM Studenten s ;BEGIN

FOR rec s tuden t IN c s tuden t LOOPIF l sem < c s tuden t . semester THEN

l sem := c s tuden t . semester ;l name := c s tuden t . name ;

END IF ;END LOOP;

END;/

Page 32: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Oops, Kompilierfehler in Datei versuch3.sql:

SHOW ERRORSSELECT ∗ FROM User Er rors

Cursor im IF-Statement falsch verwendet!I Korrigierte Version von Datei versuch3.sql:

FOR rec s tuden t IN c s tuden t LOOPIF l sem < rec s tuden t . semester THEN

l sem := rec s tuden t . semester ;l name := rec s tuden t . name ;

END IF ;END LOOP;

Page 33: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Test-Treiber in Datei versuch4.sql:

DECLAREname VARCHAR2 ( 3 0 ) ;semester NUMBER ( 2 ) ;

BEGINp sem max (name, semester ) ;dbms output . put ( ’name : ’ | | name | | ’ ’ ) ;dbms output . p u t l i n e ( ’ semester : ’ | | semester ) ;

END ;/

I Keine Bildschirmausgabe!SET SERVEROUTPUT ON

Page 34: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Ergebnis offensichtlich falsch: name und semester sindNULL.

I Fehlersuche (Datei versuch5.sql) mittelsBildschirmausgaben:

dbms output . p u t l i n e ( ’ semester : ’ | | l sem ) ;FOR rec s tuden t IN c s tuden t LOOP

dbms output . p u t l i n e ( ’FOR−Sch le i f e ’ ) ;dbms output . p u t l i n e ( ’ rec s tuden t : ’ | |

rec s tuden t . semester ) ;IF l sem < rec s tuden t . semester THEN

dbms output . p u t l i n e ( ’ IF−Statement ’ ) ;l sem := rec s tuden t . semester ;. . .

END IF ;END LOOP;

Page 35: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

Fehlererkennung:I l sem hat immer den Wert NULL.I Fehler: l sem wurde nicht initialisiert.

Fehlerkorrektur und letzter Test mit Datei versuch6.sql:

CREATE OR REPLACE PROCEDURE p sem max . . . ASCURSOR c s tuden t ISSELECT ∗ FROM Studenten s ORDER BY semester ASC;BEGIN

l sem := 0;FOR rec s tuden t IN c s tuden t LOOP

. . .END;

Page 36: Entwicklungsumgebung fur die Labor¨ ubung¨€¦ · Oracle Datenbank auf Uebung DB-Server auf Uebung: I Oracle 10g EE (Enterprise Edition) DB-Benutzung: I Alle LVA-Teilnehmer erhalten

PL/SQL Prozedur

I Losung: Datei abgabe bsp2.sqlAusgabe-Kommandos aus der Prozedur entfernen.

I Bemerkung: Eigentlich hatte man dieses Problem miteinem einfachen SQL-Statement losen konnen (bei demman auch mehrere Tupel als Losung bekommen kann, fallsmehrere Studenten gleich lange studieren):

SELECT s .Name, s . SemesterFROM Studenten sWHERE s . Semester =

(SELECT MAX( s1 . Semester )FROM Studenten s1 )