1 / 18

PL/SQL

PL/SQL. - Kurze Einführung -. Was fehlt noch?. Konzept einer PL/SQL-Sprache in DB ausführlicher PL/SQL und Ablauf Konkrete Beispiele. PL/SQL. .. ist eine Oracle-eigene, prozedurale Programmiersprache

tanika
Télécharger la présentation

PL/SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PL/SQL - Kurze Einführung -

  2. Was fehlt noch? • Konzept einer PL/SQL-Sprache in DB ausführlicher • PL/SQL und Ablauf • Konkrete Beispiele Übung Data Warehousing: PL/SQL

  3. PL/SQL • .. ist eine Oracle-eigene, prozedurale Programmiersprache • Sämtliche bekannten Konzepte können verwendet werden: Funktionen/ Prozeduren, Abfragen/bedingte Ausführung, Schleifen, etc. Übung Data Warehousing: PL/SQL

  4. Konzept • Tight integration • DDL / DML: einfach & effizient • Stored procedures • Verwendung in SQL Statements • dynamisches SQL • Security • Kein direkter Zugriff durch Clients • User benutzen stored procedures Übung Data Warehousing: PL/SQL

  5. Programmdateien • Programme können in Dateien abgelegt werden • Ausführung eines Programmes in SQL*Plus: „@meinprogramm{.sql}“ • Programmdateien müssen mit einer Leerzeile enden Übung Data Warehousing: PL/SQL

  6. PL/SQL-Programme • .. bestehen aus Blöcken, welche ineinander verschachtelt sein können: DECLARE .. /* Variablen-&Typdeklarationen */ BEGIN .. /* Programmcode, Funktionen .. */ EXCEPTION .. /* Exception-Handling */ END; Übung Data Warehousing: PL/SQL

  7. 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 <attribut> into <variable> from <tabelle> where <bedingung>; Übung Data Warehousing: PL/SQL

  8. Variablen und Datentypen • Alle von Oracle unterstützen Typen + NUMBER, BOOLEAN • Ermittlung zur Compilezeit möglich DECLARE name VARCHAR(20); gruppe NUMBER; punktezahl Gruppen.punkte%TYPE; Übung Data Warehousing: PL/SQL

  9. Zuweisungen & SQL DECLARE gruppe Gruppen.name%TYPE; punktezahl Gruppen.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; Übung Data Warehousing: PL/SQL

  10. Kontrollflüsse • LOOP EXIT WHEN <B> ... END LOOP; • WHILE <B> LOOP ... END LOOP; • FOR <V> IN <C1>..<C2> LOOP ... END LOOP; • IF <B> THEN ... ELSIF <B2> THEN ... ELSE ... END IF; Übung Data Warehousing: PL/SQL

  11. Cursor .. • Problem bei erwähnten Zuweisungen von Tabellenwerten: funktioniert nur bei single-row- select • Abhilfe: die sogenannten Cursor • arbeiten sämtliche Tupel aus dem Ergebnis nacheinander ab Übung Data Warehousing: PL/SQL

  12. .. Cursor .. DECLARE CURSOR GruppenCursor IS SELECT name,punkte FROM Gruppen WHERE punkte <= 10 FOR UPDATE; BEGIN OPEN Gruppencursor; <do something> CLOSE GruppenCursor; END; Übung Data Warehousing: PL/SQL

  13. .. Cursor LOOP 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; Übung Data Warehousing: PL/SQL

  14. Prozeduren & Funktionen CREATE PROCEDURE GruppeEinfuegen( gruppe Gruppen.name%TYPE, punktezahl Gruppen.punkte%TYPE) AS BEGIN /* .. */ END GruppeEinfuegen; /* Hauptprogramm */ BEGIN /* .. */ GruppeEinfuegen('group1',0); /* .. */ END; Übung Data Warehousing: PL/SQL

  15. Prozeduren & Funktionen CREATE FUNCTION Quadriere(zahl NUMBER) RETURN NUMBER AS DECLARE q NUMBER; BEGIN q := zahl * zahl; RETURN zahl; END Quadriere; /* Hauptprogramm */ DECLARE r NUMBER; BEGIN r := Quadriere(7); END; Übung Data Warehousing: PL/SQL

  16. Prozeduren & Funktionen • Anzeige aller Procedures/Functions: select object_type, object_name from user_objects where object_type = 'PROCEDURE' or object_type = 'FUNCTION'; • Löschen einer Procedure/Function: drop function <funktions_name>; • Überschreiben: CREATE OR REPLACE PROCEDURE .. ; Übung Data Warehousing: PL/SQL

  17. Fehlermeldungen • Fehlermeldungen sind i.d.R. leider wenig aussagekräftig • genauere Beschreibung über show errors procedure <name>; • Anzeige des letzten Fehlers: SHO ERR; • Positionsangaben oft ungenau! Übung Data Warehousing: PL/SQL

  18. Beispiel DECLARE qty_on_hand NUMBER(5); BEGIN SELECT quantity INTO qty_on_hand FROM inventory WHERE product = 'TENNIS RACKET'‚ FOR UPDATE OF quantity; IF qty_on_hand > 0 THEN UPDATE inventory SET quantity = quantity – 1 WHERE product = 'TENNIS RACKET'; INSERT INTO purchase_record VALUES ('Tennis racket purchased', SYSDATE); ELSE INSERT INTO purchase_record VALUES ('Out of tennis rackets', SYSDATE); END IF; COMMIT; END; Übung Data Warehousing: PL/SQL

More Related