PL/SQL - Kurze Einführung -
23. April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche bekannten Konzepte können verwendet werden: Funktionen/ Prozeduren, Abfragen/bedingte Ausführung, Schleifen, etc.
23. April 2003Übung Data Warehousing: PL/SQL 3 Programmdateien Programme können in Dateien abgelegt werden Ausführung eines Programmes in Programmdateien müssen mit einer Leerzeile enden
23. April 2003Übung Data Warehousing: PL/SQL 4 PL/SQL-Programme.. bestehen aus Blöcken, welche ineinander verschachtelt sein können: DECLARE.. /* Variablen-&Typdeklarationen */ BEGIN.. /* Programmcode, Funktionen.. */ EXCEPTION.. /* Exception-Handling */ END;
23. April 2003Übung Data Warehousing: PL/SQL 5 SQL in PL/SQL Erlaubte SQL-Statements: – select, insert, delete, update + Transaktionen Nicht (direkt) erlaubt – create, drop, alter SELECT hat eine eigene, abgewandelte Form: select into from where ;
23. April 2003Übung Data Warehousing: PL/SQL 6 Variablen und Datentypen Alle von Oracle unterstützen Typen + NUMBER, BOOLEAN Ermittlung zur Laufzeit möglich DECLARE name VARCHAR(20); gruppe NUMBER; punktezahl Gruppen.punkte%TYPE;
23. April 2003Übung Data Warehousing: PL/SQL 7 Zuweisungen & SQL DECLARE gruppeGruppen.name%TYPE; punktezahlGruppen.punkte%TYPE; BEGIN SELECT name,punkte INTO gruppe, punktezahl FROM Gruppen WHERE punkte <= 10 FOR UPDATE; punktezahl := punktezahl + 1; INSERT INTO Gruppen VALUES (gruppe, punktezahl); END;
23. April 2003Übung Data Warehousing: PL/SQL 8 Kontrollflüsse LOOP EXIT WHEN... END LOOP; WHILE LOOP... END LOOP; FOR IN.. LOOP... END LOOP; IF THEN... ELSIF THEN... ELSE... END IF;
23. April 2003Übung Data Warehousing: PL/SQL 9 Cursor.. Problem bei erwähnten Zuweisungen von Tabellenwerten: funktioniert nur bei single-row- select, d.h. wenn ein einzelnes Tupel zurückgeliefert wird Abhilfe: die sogenannten Cursor sie arbeiten sämtliche Tupel aus dem Ergebnis nacheinander ab
23. April 2003Übung Data Warehousing: PL/SQL 10.. Cursor.. DECLARE CURSOR GruppenCursor IS SELECT name,punkte FROM Gruppen WHERE punkte <= 10 FOR UPDATE; BEGIN OPEN Gruppencursor; LOOP
23. April 2003Übung Data Warehousing: PL/SQL 11.. Cursor FETCH GruppenCursor INTO gruppe,punktezahl; EXIT WHEN GruppenCursor%NOTFOUND; punktezahl := punktezahl * 2; DELETE FROM Gruppen WHERE CURRENT OF GruppenCursor; INSERT INTO Gruppen VALUES (gruppe,punktezahl); END LOOP; CLOSE GruppenCursor; END;
23. April 2003Übung Data Warehousing: PL/SQL 12 Prozeduren & Funktionen CREATE PROCEDURE GruppeEinfuegen( gruppe Gruppen.name%TYPE, punktezahl Gruppen.punkte%TYPE) AS BEGIN /*.. */ END GruppeEinfuegen; BEGIN /* Hauptprogramm */ /*.. */ GruppeEinfuegen('group1',0); /*.. */ END;
23. April 2003Übung Data Warehousing: PL/SQL 13 Prozeduren & Funktionen Wie Prozeduren, Rückgabe über return ; select object_type, object_name from user_objects where object_type = 'PROCEDURE' or object_type = 'FUNCTION'; drop function ; CREATE OR REPLACE PROCEDURE.. ;
23. April 2003Übung Data Warehousing: PL/SQL 14 Fehlermeldungen Fehlermeldungen sind i.d.R. leider wenig aussagekräftig genauere Beschreibung über show errors procedure ; Anzeige des letzten Fehlers: SHO ERR; Positionsangaben oft ungenau!