Crash-Kurs PL/SQL. Martin Landvoigt
|
|
|
- Sigrid Eberhardt
- vor 7 Jahren
- Abrufe
Transkript
1 Crash-Kurs PL/SQL Martin Landvoigt
2 Übersicht Einführung: Warum Code in der DB? Ein Beispiel... Die Umgebung: SQLPLUS, TOAD, Aqua Data Studio... Objekte mit PL/SQL: Anonyme Codeblöcke Stored Procedures, Functions und Packages / Trigger Die Sprache im Überflug: Variablen / Blöcke und Exceptions Operatoren / Kontrollstrukturen Einbindung von SQL / Cursor etc. E/A Das schräge Output Modell
3 Einführung: Warum Code in der DB? Exklusive Funktionen: Manches geht nur hier Funktionale Kapselung Performance-Steigerung Applikationsentwicklung Web-Anwendungen Oracle Forms Security Implementierung Pflege von Altanwendungen
4 Ein Beispiel... Replikation / Kopplung einer Zentralen DB mit Notebook-Instanzen Erstellung von DB-Objekten Fehlerbehandlung Automatische Erstellung von User-Accounts / Abgleich mit Zentrale Dynamisches Kopieren von beliebigen Tabelen
5 Die Umgebung: (1) Oracle DB-Server g Oracle Client / Oracle Net Konfiguration TNSNAMES.ORA SQLplus Command-Line und Windows-Vers. Erweiterter Command Set Batch-Prozessor Andere Front-Ends (Fortsetzung)
6 Die Umgebung (2) TOAD, SQL Worksheet, SQL Navigator Beliebte Entwicklungs-Umgebungen Editor, Sonderfunktionen Aqua Data Studio Java / kostenlos (privat & educational) für viele DBMS verfügbar erleichtert Entwicklung Besonderheit: GO
7 Objekte mit PL/SQL Anonyme Codeblöcke Skripte Installation / Test einmal-programme Stored Procedures & Functions DB-Objekte mit und ohne Rückgabe Functions auch in SQL-Selects Packages Strukturierung mit Variablen / Security.. Trigger Werden bei Ereignissen in Tabellen gestartet
8 Die Sprache im Überflug: Variablen Ähnliche Datentypen wie in ORACLE DB: Char und Varchar2 (bis 32 KBytes) Number (BCD mit bis zu 38 Stellen) Date Long Zusätzliche Datentypen: BINARY_INTEGER PLS_INTEGER Boolean
9 Char Variablen (1) Char [ (<Länge>) ] Zeichenkette fester Länge (in Bytes) Maximale Länge Bytes Maximale Länge in der Datenbank 255 Bytes (ab Oracle8: 2000 / Oracle 9: 4000) Ggf. mit Leerzeichen aufgefüllt VARCHAR2 [ (<Länge>) ] Zeichenkette variabler Länge (in Bytes) Maximale Länge Bytes Maximale Länge in der Datenbank 2000 Bytes (ab Oracle8: 4000) Subtypen: STRING, VARCHAR
10 Vergleich zwischen CHAR und VARCHAR2 Bei Zuweisungen werden CHAR-Variablen mit Leerzeichen aufgefüllt. Das führt dazu, daß bei Vergleichen von CHAR-Werten nachfolgende Leerzeichen unberücksichtigt bleiben. Da in VARCHAR2 nachfolgende Leerzeichen so erhalten bleiben, wie sie zugewiesen werden, führt ein Vergleich zu anderen Ergebnissen: declare s1 char(5) := '12'; -- ohne nachfolgende Leerzeichen s2 char(5) := '12 '; -- mit nachfolgenden Leerzeichen => s1 = s2 ist TRUE declare s1 varchar2(5) := '12'; -- ohne Leerzeichen s2 varchar2(5) := '12 '; -- mit Leerzeichen => s1 = s2 ist FALSE Beim Einfügen von Werten in die Datenbank, werden CHAR - Spalten mit Leerzeichen aufgefüllt, VARCHAR2-Spalten nicht. Sie behalten ihren Wert, der ihnen zuvor zugewiesen wurde. Nachfolgende Leerzeichen bleiben erhalten. CHAR-Werte benötigen für jedes definierte Zeichen Speicherplatz. VARCHAR-Werte benötigen für jedes verwendete Zeichen Speicherplatz. Beispiel: s char(100) := ' ' 100 Bytes s varchar2(100) := ' ' 10 Bytes
11 Numerische Datentypen NUMBER [ (<Länge>, <Nachkommastellen>) ] Numerische Werte von 1.0E E125 maximale Länge 38 Nachkommastellen von -84 bis 127 => automatische Rundung Beispiel: NUMBER (5,2) => drei Vorkomma- und zwei Nachkommastellen Subtypen: DECIMAL, INTEGER, REAL, SMALLINT BINARY_INTEGER Ganze Zahlen von bis Verbraucht weniger Speicherplatz als NUMBER Subtypen: NATURAL, NATURALN, POSITIVE, POSITIVEN PLS_INTEGER Ganze Zahlen von bis Verbraucht weniger Speicherplatz als NUMBER Schneller als BINARY_INTEGER und NUMBER
12 Deklaration von Variablen Zuweisungen von Werten zu Variablen direkt bei der Deklaration erfolgen wie folgt: declare v_zahl1 number(5) := 5; v_zahl2 number(5) DEFAULT 5; Soll eine Variable zur Laufzeit niemals den Wert NULL annehmen dürfen, so ist dies bei der Deklaration anzugeben: declare v_zahl1 number(5) NOT NULL := 5; v_zahl2 number(5) NOT NULL DEFAULT 5; Die Zuweisung von NULL führt dann zu einem Laufzeitfehler. Die Default-Werte sind bei der Deklaration zwingend erforderlich. Deklaration von Konstanten Beispiel: declare v_zahl1 constant number(5) := 5; v_zahl2 constant number(5) DEFAULT 5; Zuweisungen sind nicht möglich Default-Werte sind zwingend erforderlich
13 Typ - Referenzierung Unter Typ - Referenzierung versteht man die Deklaration einer Variablen in Abhängigkeit von einer Typ - Definition einer Tabelle oder Spalte in der Datenbank. Der Operator %TYPE referenziert einen Spaltentyp, %ROWTYPE einen Recordtyp aus einer Tabelle oder einem View. Beispiel: declare v_bezeichnung ARTIKEL.BEZEICHNUNG%TYPE; v_auftrag_pos AUFTRAG_POS%ROWTYPE; begin select * into v_auftrag_pos from auftrag_pos where auftrag_nr = 8 and pos = 1; select bezeichnung into v_bezeichnung from artikel where artikel_nr = v_auftrag_pos.artikel_nr; end;
14 Blöcke und Exceptions Prinzip: DECLARE Deklarationsteil BEGIN Programmteil EXCEPTION Ausnahmebehandlung END; Der Start eines PL/SQL - Blocks wird mit dem Zeichen / zu Beginn der nächsten Zeile eingeleitet. Dabei wird der Block als Ganzes von der Datenbank verarbeitet. Der Deklarationsteil und die Ausnahmebehandlung sind optional. Es ist eine beliebige Schachtelung von Blöcken möglich. Kommentare werden mit -- bis zum Ende der Zeile eingeleitet. Geklammerte /* und */ fügen mehrzeilige Kommentare ein.
15 Blöcke und Exceptions - Beispiel: DECLARE v_einheit_kurz varchar2(10); v_bezeichnung varchar2(40); BEGIN v_einheit_kurz := 'kg'; v_bezeichnung := 'Kilogramm'; insert into einheit (einheit_kurz, bezeichnung) values (v_einheit_kurz, v_bezeichnung); EXCEPTION when DUP_VAL_ON_INDEX then /* Der Datensatz ist schon da => Bezeichnung neu setzen */ update einheit set bezeichnung = v_bezeichnung where einheit_kurz = v_einheit_kurz; END; Das Beispiel fügt in die Tabelle Einheit einen Datensatz ein. Existiert bereits eine Einheit mit der Kurzbezeichnung 'kg', so wird nur der Bezeichnungstext geändert. Dies erfolgt jedoch nur, weil EINHEIT_KURZ der Primärschlüssel ist.
16 Procedure in PL/SQL PROCEDURE name [ ( parameter [, parameter ] ) ] IS Deklarationsteil BEGIN Programmteil EXCEPTION Ausnahmebehandlung END; Der prinzipielle Aufbau einer Prozedur entspricht dem eines PL/SQL - Blocks. Die Parameterliste ist optional. Falls Parameter definiert werden, so besteht die Definition aus der Parametervariablen, der Parameterart und dem Datentyp. Die Länge der Datentypen wird nicht mit angegeben, also z.b. varchar2 und nicht varchar2(80). Es existieren, abhängig von der jeweiligen PL/SQL - Version, Einschränkungen bei der Verwendung von Datentypen als Parameter. So ist es in PL/SQL - Version 1 nicht möglich zusammengesetzte Typen zu übergeben.
17 Parameter Arten von Parametern IN Nur Eingabe (DEFAULT) OUT Nur Ausgabe IN OUT Ein- und Ausgabe, call by value and result DEFAULT-Parameter Beispiel: procedure p (a in number, b in varchar2 default '0') is... Der Parameter b ist optional, d.h. er muß beim Aufruf der Prozedur nicht angegeben werden. In diesem Fall erhält b Wert '0'. Parameterübergabe Anhand der Position: p (10, 'hallo') Anhand der Namen: p (b => 10, a => 'hallo') oder p (a => 'hallo', b => 10) Es werden Parameter normalerweise call by Value referenziert! Ausnahme: NOCOPY
18 Beispiel für eine Prozedur declare v_anzahl pls_integer; procedure neue_einheit ( p_einheit_kurz in varchar2, p_bezeichnung in varchar2) is begin insert into einheit (einheit_kurz, bezeichnung) values (p_einheit_kurz, p_bezeichnung); end; begin select count(*)into v_anzahl from einheit where einheit_kurz = 'm'; if v_anzahl = 0 then neue_einheit ('m', 'Meter'); end if; end;
19 Funktionen in PL/SQL FUNCTION name [ ( parameter [, parameter ] ) ] RETURN type IS typ Deklarationsteil BEGIN Programmteil RETURN EXCEPTION Ausnahmebehandlung END; Der Aufbau einer Funktion entspricht dem einer Prozedur mit der Ausnahme, daß Funktionen immer ein Ergebnis zurückliefern. Deshalb muß der Programmteil stets mit einem RETURN - Befehl beendet werden.
20 Beispiel für eine Funktion declare function einheit_existiert (p_einheit_kurz in varchar2) return boolean is v_anzahl pls_integer; begin select count(*)into v_anzahl from einheit where einheit_kurz = p_einheit_kurz; return v_anzahl > 0; end; begin if not einheit_existiert ('m') then insert into einheit (einheit_kurz, bezeichnung) values (m', 'Meter'); end if; end;
21 Vergleichsoperatoren = gleich <>, ~=,!=, ^= ungleich < kleiner > größer < kleiner oder gleich >= größer oder gleich IS NULL hat den Pseudo-Wert NULL IS NOT NULL hat nicht den Pseudo-Wert NULL LIKE Zeichenkettenvergleich mit Platzhaltern '%' und '_' NOT LIKE Umkehrung von LIKE BETWEEN Kurzschreibweise für <= und >= IN Mengenvergleich Vergleiche mit NULL liefern immer das Ergebnis FALSE Platzhalter '%' steht für beliebige Zeichenkette (auch leer) Platzhalter '_' steht für genau ein beliebiges Zeichen Beispiel für BETWEEN: if a between 1 and 10 then... Beispiel für IN: if a in (1,2,3,4) then...
22 Weitere Operatoren AND logisches und OR logisches oder NOT logisches nicht * Multiplikation ** Exponent / Division + Addition bzw. positives Vorzeichen - Subtraktion bzw. negatives Vorzeichen Konkatenation zweier Zeichenketten Prioritäten der Operatoren in Ausdrücken: höchste Priorität NOT, ** +, - (als Vorzeichen) /, * +, -, =,!=, <, >, <=, >=, IS NULL,LIKE,BETWEEN,IN AND geringste Priorität OR
23 Kontrollstrukturen: Zuweisung Variable := Ausdruck; Beispiel: declare a number(5); b boolean; begin a := (3 + 5) / 8; b := a = 5;... b := TRUE; end; Man betrachte die folgende Zuweisung: a := b + c; Die Variable a wird nach der Zuweisung den Wert NULL enthalten, wenn entweder b oder c den Wert NULL enthalten!
24 Bedingte Verzweigung if then (elsif) (else) end if; if a = 5 then... elsif a = 6... else... end if; Zwischen then und end if muß mindestens ein Befehl stehen (oder der leere Befehl: NULL;)!
25 Sprung (goto) Definition von Sprungmarken: <<Sprungmarke>> Eine Sprungmarke muß unmittelbar vor einem ausführbaren Befehl definiert werden (also nicht end, end if...). GOTO - Befehl GOTO Sprungmarke Beispiel:... if not berechnen then goto ende; end if;... <<ende>>... Einschränkungen Eine GOTO - Anweisung kann nur zu einem Label verzweigen, das auf der gleichen oder einer höheren Verarbeitungsebene steht. So ist es z.b. nicht erlaubt, von außen in eine Verzweigung, Schleife oder Block zu springen.
26 Unbedingte Schleife (loop) loop... end loop; Es handelt sich generell um eine Endlos - Schleife. Sie muß mit dem EXIT - Befehl verlassen werden. Schleifenmarken Um bei verschachtelten Schleifen angeben zu können, welche Schleife durch einen EXIT - Befehl verlassen werden soll, setzt man vor der Schleife eine entsprechende Sprungmarke und gibt sie beim EXIT - Befehl an. Das führt im folgenden Beispiel zum Verlassen beider Schleifen. begin << aeussere_schleife >> loop... loop... exit aeussere_schleife; end loop end loop aeussere_schleife; end;
27 WHILE - Schleife In einer WHILE - Schleife wird eine Bedingung spezifiziert. Die Schleife wird dann so lange durchlaufen, bis diese Bedingung erfüllt ist. Die Bedingung wird vor jedem Schleifendurchlauf erneut überprüft. while <boolscher Ausdruck> loop... end loop
28 FOR - Schleife for Zählvariable in <linke Grenze>..<rechte Grenze> loop... end loop; Die Zählvariable kann nur ganze Zahlen annehmen, wobei die Schrittweite immer eins beträgt. Rückwärts laufende Schleifen erfordern stattdessen die Angabe IN REVERSE statt IN. Innerhalb der Schleife kann die Zählvariable nicht das Ziel einer Zuweisung sein. ACHTUNG: Sie überdeckt eine bereits existierende Variable gleichen Namens in dem Block, in dem sich die Schleife befindet, d.h. der Wert der Zählvariablen ist nach dem END LOOP nicht verfügbar. Die Zählvariable wird nicht im DECLARE - Teil des PL/SQL - Blocks oder im Deklarationsteil einer Prozedur definiert. Die Deklaration erfolgt durch die Schleife selbst. Die Grenzen werden zur Laufzeit einmalig vor der Schleife berechnet, d.h. die Grenzen sind während der Schleifendurchläufe nicht veränderbar. Um eine FOR - Schleife vorzeitig zu verlassen, steht der EXIT - Befehl zur Verfügung. For Each wird später mit Cursor Verarbeitung genannt.
29 Schleifen - EXIT - Befehl Der EXIT - Befehl bewirkt das Verlassen der aktuellen Schleife. Es wird nach dem END LOOP - Befehl fortgefahren. Der Befehl ist nur im Schleifen - Kontext nutzbar, es ist nicht möglich, z.b. eine verschachtelte IF - Abfrage oder einen Block mit dem EXIT - Befehl zu verlassen. Dazu dient das GOTO - Statement. EXIT WHEN - Befehl EXIT WHEN <boolscher Ausdruck>; Die Schleife wird nur verlassen, wenn eine Bedingung erfüllt ist. Es ist dies eine Kurzschreibweise für: if <boolscher Ausdruck> then exit; end if;
30 Einbettung von SQL in PL/SQL Prinzip Da PL/SQL die prozedurale Erweiterung von SQL darstellt, können in PL/SQL fast alle Möglichkeiten von SQL benutzt werden. Alle SQL- DML - Befehle (select, insert, update, delete) sind direkt in PL/SQL verfügbar. Dabei dienen PL/SQL - Variablen dem Datenaustausch zwischen SQL und PL/SQL. Weiterhin ist die Verwendung der Befehle zur Transaktionssteuerung (commit, rollback...) möglich. DDL - Befehle müssen über dynamisches SQL durch Verwendung der Standard Package DBMS_SQL realisiert werden. ( Parse ) oder EXECUTE IMMEDIATE führt konstruierte Strings, auch DDL, aus Alle SELECT-Befehle müssen eine INTO-Klausel enthalten, die definiert, welche Variablen das Ergebnis aufnehmen sollen.
31 Einbettung von SQL in PL/SQL Beispiel: declare v_bezeichnung einheit.bezeichnung%type; begin select bezeichnung into v_bezeichnung from einheit where einheit_kurz = 'm';... insert into einheit (einheit_kurz, bezeichnung) values ('l', 'Liter');... update auftrag set hinweis = hinweis 'Neuer Artikel ' v_bezeichnung; end;
32 Cursor - Definition Cursor sind Datenstrukturen im Arbeitsspeicher, die für die Abarbeitung von SQL - Befehlen benötigt werden. Für jeden SQL - Befehl wird automatisch ein entsprechender Speicherbereich allokiert (impliziter Cursor). Für SELECT - Befehle, die mehrere Zeilen liefern, muß ein expliziter Cursor verwendet werden.
33 Cursor - Beispiel: declare v_summe number := 0; v_pos_preis number; cursor c_auftrag_pos is select anzahl*preis from auftrag_pos; begin OPEN c_auftrag_pos; loop FETCH c_auftrag_pos into v_pos_preis; exit when c_auftrag_pos%notfound; v_summe := v_summe + v_pos_preis; end loop; CLOSE c_auftrag_pos; end;
34 Cursor Parameter Beispiel declare v_summe number := 0; v_pos_preis number; cursor c_auftrag_pos (p_auftrag_nr in auftrag_pos.auftrag_nr%type) is select anzahl*preis from auftrag_pos where auftrag_nr = p_auftrag_nr; begin OPEN c_auftrag_pos (4711); loop FETCH c_auftrag_pos into v_pos_preis; exit when c_auftrag_pos%notfound; v_summe := v_summe + v_pos_preis; end loop; CLOSE c_auftrag_pos; end;
35 Cursor - Strukturvariablen -Beispiel declare v_summe number := 0; v_auftrag_pos auftrag_pos%rowtype; cursor c_auftrag_pos (p_auftrag_nr in auftrag_pos.auftrag_nr%type) is select * from auftrag_pos where auftrag_nr = p_auftrag_nr; begin OPEN c_auftrag_pos (4711); loop FETCH c_auftrag_pos into v_auftrag_pos; exit when c_auftrag_pos%notfound; v_summe := v_summe + v_auftrag_pos.anzahl * v_auftrag_pos.preis; end loop; CLOSE c_auftrag_pos; end;
36 Cursor - Attribute Jeder Cursor hat vier Statusattribute, auf die mit cursor%attribut zugegriffen wird. Bei impliziten Cursorn erfolgt der Zugriff mit SQL%ATTRIBUT. %OPEN steht bei impliziten Cursorn nicht zur Verfügung. Um den aktuellen Datensatz eines expliziten Cursors mit einem UPDATE-Befehl zu ändern, kann man die CURRENT OF - Klausel in der WHERE- Bedingung verwenden. %FOUND Gibt an, ob der letzte FETCH - Befehl einen Satz gefunden hat => TRUE Vor dem ersten Fetch NULL %NOTFOUND Gibt an, ob der letzte FETCH - Befehl einen Satz gefunden hat => FALSE Vor dem ersten Fetch NULL %ROWCOUNT Liefert die Anzahl der mit FETCH gelesenen Zeilen Vor dem ersten FETCH auf 0 %ISOPEN Gibt an, ob ein Cursor geöffnet ist
37 Beispiel mit CURRENT OF declare v_auftrag auftrag%rowtype; cursor c_auftrag (p_auftrag_nr in auftrag_pos.auftrag_nr%type) is select * from auftrag where auftrag_nr = p_auftrag_nr; for update of status; begin OPEN c_auftrag (4711); loop FETCH c_auftrag into v_auftrag; exit when c_auftrag_pos%notfound; if v_auftrag.status = 'A' then bearbeite_auftrag (v_auftrag); update auftrag set status = 'E' where current of c_auftrag; end if; end loop; CLOSE c_auftrag; end;
38 Cursor - FOR - Schleifen Durch eine Cursor - FOR - Schleife wird ein (impliziter) Cursor automatisch geöffnet, alle Sätze der Ergebnismenge des zugehörigen SELECT - Befehls gelesen und der Cursor wieder geschlossen. Die Befehle OPEN, FETCH und CLOSE sind dann nicht notwendig. Die Schleifenvariable hat den Recordtyp des Cursors.
39 Cursor - FOR - Beispiel 1: declare v_summe number := 0; cursor c_auftrag_pos (p_auftrag_nr in auftrag_pos.auftrag_nr%type) is select * from auftrag_pos where auftrag_nr = p_auftrag_nr; begin for v_auftrag_pos in c_auftrag_pos(4711) loop v_summe := v_summe + v_auftrag_pos.anzahl * v_auftrag_pos.preis; end loop; end;
40 Cursor - FOR - Beispiel 2: Impliziter Cursor declare v_summe number := 0; begin for v_auftrag_pos in (select * from auftrag_pos) loop v_summe := v_summe + v_auftrag_pos.anzahl * v_auftrag_pos.preis; end loop; end;
41 Das schräge Output Modell PL/SQL hat keine eingebauten E/A Anweisungen. Diese werden über SQL oder über Packages realisiert: dbms_output utl_file Bildschirmausgaben in SQL*Plus oder SQL Worksheet einschalten: set serveroutput on Mit dbms_output in den Puffer schreiben Eine Zeile schreiben: dbms_output.put_line (a in varchar2); dbms_output.put_line (a number); begin dbms_output.put_line ('Dies ist ein Test!'); end; Die dbms_output - Puffergröße einstellen Die Defaultgröße beträgt Bytes. Maximum ist Bytes. Beispiel: Einstellen der dbms_output-puffergröße auf : dbms_output.enable ( );
42 Exceptions Tritt zur Laufzeit ein Fehler auf, so wird eine Exception ausgelöst. Jeder Exception ist eine Datenbank - Fehlernummer zugeordnet. Durch den Exception Handler kann im Programm auf das Auslösen einer Exception reagiert werden. Für die wichtigsten Fehlerfälle existieren eine Reihe von vordefinierten Exceptions. Darüber hinaus können weitere Exceptions frei definiert werden. Das Auslösen einer Exception führt immer zum Verlassen des aktuellen Blocks. Soll der Fehlerzustand an den übergeordneten Block weitergegeben werden, so muß dieses mit dem Befehl RAISE erfolgen. Tritt ein Laufzeitfehler ohne zugehörigen Exception Handler auf, so wird der aktuelle Block mit dem Fehlerzustand verlassen und die Fehlerbehandlung erfolgt von neuem im übergeordneten Block.
43 Exceptions - Beispiel declare... begin... exception when OTHERS then dbms_output.put_line ('Fehler:' sqlerrm); end;
44 Vordefinierte Exceptions Exception Name CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND NOT_LOGGED_ON Fehlernr. Beschreibung ORA Cursor bereits geöffnet ORA Schlüssel doppelt eingetragen ORA Cursor nicht geöffnet ORA bei impliziter Typkonvertierung ORA Benutzername oder Paßwort falsch ORA SELECT liefert kein Ergebnis ORA Keine Verbindung zur Datenbank PROGRAM_ERROR RA Interner PL/SQL - Fehler ROWTYPE_MISMATCH ORA Strukturvariablen inkompatibel STORAGE_ERROR ORA Speicherprobleme TIMEOUT_ON_RESOURCE ORA Datenbank-Sperre TOO_MANY_ROWS ORA SELECT liefert mehr als eine Zeile VALUE_ERROR ORA meistens: Zeichenkette zu kurz definiert ZERO_DIVIDE ORA durch 0 geteilt
45 Verschachtelung von Exceptions Eine Exception gilt für den Block, in dem sie definiert ist oder wenn der Fehler in einem Subblock auftritt und dort nicht behandelt wird. Der Fehlerzustand wird mit dem Befehl RAISE weitergegeben. Beispiele: begin declare a number(1); begin a := 55; end; exception when VALUE_ERROR then... end; begin declare a number(1); begin a := 55; exception when VALUE_ERROR then raise VALUE_ERROR; end; exception when VALUE_ERROR then... end;
46 User Defined Exceptions Beispiel: declare v_bezeichnung EINHEIT_FEHLER einheit.bezeichnung%type; EXCEPTION; begin select bezeichnung into v_bezeichnung from einheit where einheit_kurz = 'm'; if v_bezeichnung <> 'Meter' then raise EINHEIT_FEHLER; end if; exception when EINHEIT_FEHLER then... end;
47 Zuordnung von Datenbank - Fehlernummern zu Exceptions Über PRAGMA - Anweisungen können Datenbank - Fehlernummern Exceptions über die bereits vordefinierten hinaus zugeordnet werden. Alle Oracle - Fehlernummern können hier verwendet werden. Dabei stehen die Fehlernummern bis zusätzlich für die Programmierung frei zur Verfügung. Der Befehl raise_application_error erzeugt einen Fehlerzustand unter Angabe der Fehlernummer und des Fehlertextes. Dies ist zur Verwendung der freien Fehlernummern bis gedacht. Beispiel: declare v_bezeichnung einheit.bezeichnung%type; EINHEIT_FEHLER EXCEPTION; PRAGMA EXCEPTION_INIT (EINHEIT_FEHLER, ); begin select bezeichnung into v_bezeichnung from einheit where einheit_kurz = 'm'; if v_bezeichnung <> 'Meter' then raise_application_error (-20100, Bezeichnung falsch'); end if; exception when EINHEIT_FEHLER then... end;
48 PL/SQL-Tables (Arrays) PL/SQL-Tables sind dynamische eindimensionale Arrays. Die Indizierung der Elemente erfolgt über beliebige ganze Zahlen (max. 10 Stellen, Typ BINARY_INTEGER). Es ist keine sequentielle Indizierung notwendig. So lassen sich wahlfreie Zugriffe realisieren, in dem z.b. eine Auftragsnummer als Index verwendet wird, um Daten eines Auftrags als Element des Arrays abzulegen. Als Elementtypen sind alle PL/SQL-Typen zugelassen. Zur Deklaration einer Array-Variablen muß zunächst die Deklaration eines Typs erfolgen, die das Array beschreibt: DECLARE TYPE table_typ IS TABLE OF datentyp [ NOT NULL ] INDEX BY BINARY_INTEGER; variable table_typ;
49 PL/SQL-Tables Beispiele DECLARE TYPE auftrag_table_typ IS TABLE OF auftrag%rowtype INDEX BY BINARY_INTEGER; auftrag_table auftrag_table_typ; TYPE auftrag_bearbeitet_table_typ IS TABLE OF boolean INDEX BY BINARY_INTEGER; auftrag_bearbeitet_table auftrag_bearbeitet_table_typ;
50 Verwendung von PL/SQL - Tables Indizierung variable(index) := wert; wert := variable(index); Beispiele auftrag_bearbeitet_table (4711) := TRUE; if not auftrag_bearbeitet_table (4711) then... select * into auftrag_table (4711) from auftrag where auftrag_nr = 4711; Ein Element wird dadurch erzeugt, dass ihm ein Wert zugewiesen wird. Der Zugriff auf ein nicht vorhandenes Element führt zu einer Exception NO_DATA_FOUND. Jedes Element muß einzeln erzeugt werden. Das komplette oder teilweise Laden von Datenbank-Tabellen in eine PL/SQL-Table ist seit möglich 9i über Bulk- Operationen. Jede Zeile musste bis dahin einzeln über einen Fetch in die Table geschrieben werden. Allerdings gibt es Einschränkungen bei Bulk- Operationen.
51 PL/SQL - Table - Attribute (1) EXISTS(n) Prüft, ob ein Element existiert. Beispiel: if not auftrag_bearbeitet_table.exists(4711) then auftrag_bearbeitet_table (4711) := FALSE; end if; COUNT Zählt die Elemente der Table. Beispiel: v_anzahl := auftrag_bearbeitet_table.count; FIRST und LAST Bestimmt den ersten bzw. letzten Index der Table. Liefert NULL bei einer leeren Table Beispiel: v_start := auftrag_bearbeitet_table.first;
52 PL/SQL - Table - Attribute (2) PRIOR(n) und NEXT(n) Bestimmt zu einem Index den nächsten bzw. vorherigen Index, zu dem ein Element existiert. Liefert NULL, wenn kein solches Element existiert. Beispiel: v_naechster := auftrag_bearbeitet_table.next (v_start); DELETE, DELETE(n), DELETE(n,m) Löschen aller Elemente einer Table (ohne Parameter) Löschen eines Elementes einer Table (ein Parameter) Löschen eines Bereiches von Elementen einer Table (zwei Parameter) Beispiel: auftrag_bearbeitet_table.delete (0,100); Löscht alle Elemente mit dem Index 0 bis 100.
53 Alle Elemente einer PL/SQL-Table durchlaufen declare TYPE auftrag_table_typ IS TABLE OF auftrag%rowtype INDEX BY BINARY_INTEGER; auftrag_table auftrag_table_typ; v_index BINARY_INTEGER; begin v_index := auftrag_table.first; while v_index is not NULL loop bearbeiten des Elementes auftrag_table(v_index) v_index := auftrag_table.next (v_index); end loop; end;
54 Packages und andere PL/SQL-Objekte Anzeige einer Stored Procedure, Function oder Package desc [FUNCTION PROCEDURE PACKAGE PACKAGE BODY]... select text from user_source where name = ' PROZEDUR_TEST' order by line; Anzeige aller Stored Procedures, Functions und Packages select object_name, status from user_objects where object_type = 'PROCEDURE' order by object_name; select object_name, status from user_objects where object_type = 'FUNCTION' order by object_name; select object_name, status from user_objects where object_type like 'PACKAGE%' order by object_name;
55 Status INVALID Hat eine Prozedur, Funktion oder Package den Status "invalid", so ist das Objekt zwar in der Datenbank abgelegt, es ist aber nicht übersetzt. Der nächste Aufruf führt automatisch zum erneuten Übersetzen. Es ist möglich, dass das Programm Fehler enthält oder ein abhängiges Objekt geändert wurde. Manuelles erneutes Übersetzen: alter procedure prozedur_name compile; alter function funktions_name compile; alter package package_name compile; alter package body package_name compile; Bestimmen des Status: select * from user_objects where status = 'INVALID';
56 Verwendung von Stored Functions in SQL Eine Stored Function kann prinzipiell in SQL-Befehlen verwendet werden. Es gibt jedoch eine Reihe von Einschränkungen, die von den Seiteneffekten der Funktion abhängig sind. Funktionen aus Packages müssen zur Verwendung in SQL immer eine PRAGMA RESTRICT_REFERENCES-Anweisung enthalten. Einschränkungen Die Funktion darf keine UPDATE, INSERT oder DELETE-Befehle enthalten Funktionen, die Package-Variablen verwenden, können nicht remote oder parallel ausgeführt werden Nur Funktionen, die über SELECT-Befehle aufgerufen werden, können Package-Variablen schreiben Die Parameter und der Rückgabewert müssen Datenbanktypen besitzen OUT und IN OUT-Parameter sind nicht erlaubt
57 Packages - Details Eine Package ist eine Zusammenfassung von PL/SQL-Objekten. Sie ist unterteilt in Header und Body. Beide Teile sind getrennte Datenbank- Objekte. Der Header enthält den öffentlichen Teil (Spezifikation), der von außen sichtbar ist. Der Body ist der private Teil (Programm). In ihm werden die im Header deklarierten Prozeduren und Funktionen implementiert. Vorteile von Packages Modularität Information Hiding Persistente Variablen und Cursor Nachteil: Ein erneutes Übersetzen einer Package kann zu Problemen führen. Enthält die Package globale Variablen oder Cursor, so verlieren diese Variablen ihren Wert. Das führt entweder zu einem Laufzeitfehler für alle Sessions, die diese Package verwenden oder zu einer erneuten Initialisierung. Ggf. müssen die Anwender die aktuelle Session beenden und neu starten.
58 Package Header CREATE [ OR REPLACE ] PACKAGE package_name AS öffentliche Deklarationen von: Typen Variablen Konstanten Cursors Exceptions Funktionen Prozeduren END package_name; Die öffentlich deklarierten Objekte können mit der Punkt-Notation direkt angesprochen werden. Die Variablen und Cursor, die im Header deklariert sind, sind persistent für jede Session, d.h. sie sind während der gesamten Dauer einer Session gültig.
59 Package Body CREATE [ OR REPLACE ] PACKAGE BODY package_name AS private Deklarationen von: Typen Variablen Konstanten Cursors Exceptions Implementierung der öffentlichen und privaten Prozeduren und Funktionen [BEGIN] Initialisierungsblock END package_name; Die privat deklarierten Objekte sind ebenfalls persistent für jede Session. Sie sind jedoch von außen nur über Prozeduren und Funktionen indirekt verwendbar. Der Initialisierungsblock wird einmalig beim ersten Zugriff ausgeführt. Die Köpfe der öffentlich deklarierten Prozeduren und Funktionen müssen im Body und Header identisch sein.
60 Overloading Es ist möglich, Prozeduren und Funktionen mit dem selben Namen, aber unterschiedlichen Parametern zu deklarieren. Anhand der Aufruf-Parameter wird dann automatisch die richtige Prozedur/Funktion bestimmt. Beispiel: create package ovl as procedure ausgabe (p in varchar2); procedure ausgabe (p in boolean); end; create package body ovl as procedure ausgabe (p in varchar2) is begin dbms_output.put_line ('Ausgabe => ' p); end; procedure ausgabe (p in boolean) is begin if p then dbms_output.put_line ('Ausgabe => TRUE'); else dbms_output.put_line ('Ausgabe => FALSE'); end if; end; end;
61 Verwendung von Package-Funktionen in SQL Zur Verwendung einer Package-Funktion in SQL ist ein Pragma RESTRICT_REFERENCES zu deklarieren. Damit erfolgt die Definition der Einschränkungen der Funktion manuell (im Gegensatz zu Stored Functions). Die Pragma-Anweisung steht im Package Header nach der Deklaration der entsprechenden Funktion. PRAGMA RESTRICT_REFERENCES ( funktions_name, WNDS [, WNPS] [, RNDS] [, RNPS]) WNDS writes no database state WNPS writes no package state RNDS reads no database state RNPS reads no package state Beispiel: create or replace package perf as procedure start_timer; procedure stop_timer; function get_time return number; -- Zeit in Sekunden pragma restrict_references (get_time, WNDS, WNPS, RNDS); end perf;
62 Standard Packages Mit Oracle wird eine große Anzahl an Packages, die ihrerseits jeweils n Objekte beinhalten. Z.B. Replikation, Piping u.v.m Standard Packages sind unter dem User SYS abgelegt. Mit einem Objekt-Browser und der Dokumentation können diese genutzt werden
63 Security Alle DB-Objekte liegen in einem Schema, normalerweise der Owner Die Ausführungsrechte von Statements werden zu Compile-Time ermittelt. Der Owner hat alle Rechte und kann andere User und Rollen berechtigen. GRANT EXECUTE ON pack_x TO mla; Zur Runtime gilt nur das Execute Recht.
64 Weiterführende Literatur Original Doku von Oracle Bücher von Steven Feuerstein Oracle PL/SQL Users Guide Tutorial für PL/SQL Tutorial für PL/SQL auf Deutsch Oracle FAQ: knowledge base PL/SQL Ask Tom
Prozedurale SQL-Erweiterungen
Prozedurale SQL-Erweiterungen Prozedurale SQL-Erweiterungen unterscheiden sich typischerweise durch die folgenden Punkte von dem Ansatz der Einbettung: Neue dedizierte Sprache mit direkter Integration
Einführung in PL/SQL
Einführung in PL/SQL Procedural Language/Structured Query Language Prozedurale Erweiterung der Sprache SQL für Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Dr. Christian Senger Einführung
Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL.
Oracle PL/SQL Die Programmiersprache von Oracle Struktur von PL/SQL Using Oracle PL/SQL http://www-db.stanford.edu/~ullman/fcdb/oracle/or-plsql.html Constraints and Triggers http://www-db.stanford.edu/~ullman/fcdb/oracle/or-triggers.html
Einführung in PL/SQL
Einführung in PLSQL Prozedurale Erweiterung der Sprache SQL um Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Code läuft innerhalb der Datenbank ab und ist deshalb sehr performant Zusätzlich
Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
Vorbereitungen zum 3. Praktikum (PL/SQL):
Vorbereitungen zum 3. Praktikum (PLSQL): SQL ist eine nicht-prozedurale Sprache der 4. Generation, die es nicht erlaubt, Elemente von 3.-Generation-Sprachen (Schleifen, Verzweigungen, etc.) zu benutzen.
Oracle Datenbankprogrammierung mit PL/SQL Grundlagen
Oracle Datenbankprogrammierung mit PL/SQL Grundlagen Seminarunterlage Version: 12.05 Version 12.05 vom 29. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt-
Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1
Kapitel 9 Embedded SQL Vorlesung Datenbanken 1 Embedded SQL (siehe auch [Date00]) Arbeitsweise ähnlich PL/SQL, allerdings: Normale Programmiersprache mit eingestreuten SQL-Befehlen und anderen Befehlen
Prozedurale Datenbank- Anwendungsprogrammierung
Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.
Zusammengesetzte Datentypen
Zusammengesetzte Datentypen.1 Records... -4.1.1 Implizite Typdeklaration mit %ROWTYPE... -6.1.2 Referenzierung eines Records... -6.2 PL/SQL Tables... -8.2.1 Deklaration einer PL/SQL Table... -8.3 Referenzierung
Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung
behandlung mit PL/SQL behandlung Was ist eine? Anzeige von Fehlern Wie werden sie angezeigt? Ein Oracle error erscheint. Die Anzeige ist explizit. Wie behandelt man es? Abfangen mit einem Programm. Weiterleiten
Arbeit mit zusammengesetzten Datentypen
Arbeit mit zusammengesetzten Datentypen Zusammengesetzte Datentypen Typen: PL/SQL RECORDS PL/SQL TABELLEN Enthalten interne Komponenten Sind wiederverwendbar Copyright Oracle Corporation, 1998. All rights
Kapitel 4 Dynamisches SQL
Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2012/13 LMU München 2008 Thmas Bernecker, Tbias Emrich 2010 Tbias Emrich, Erich Schubert unter Verwendung der Flien des Datenbankpraktikums
Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester
Kapitel 4 Dynamisches SQL
Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester 2007/08
Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen
Explizite Jedes SQL Statement, das der Oracle Server ausführt, hat einen individuellen, der verbunden ist mit: Implizitem : Declariert für alle DML-Statements und PL/SQL SELECT Statements. Explizitem :
Oracle PL/SQL - Grundlagen
Oracle PL/SQL - Grundlagen Steven Feuerstein mit Bill Pribyl Deutsche Übersetzung von Matthias Kalle Dalheimer O'REILT Beijing Cambridge Köln Paris Sebastopol Taipei Tokyo Inhalt Vorwort Einleitung xiii
Oracle PL/SQL Marco Skulschus Marcus Wiederstein
www.comelio-medien.com Oracle PL/SQL Marco Skulschus Marcus Wiederstein Oracle PL/SQL Marco Skulschus Marcus Wiederstein Oracle PL/SQL Marco Skulschus Marcus Wiederstein Webseite zum Buch: www.comelio-medien.com/buch-katalog/oracle/oracle_pl_sql
Oracle SQL. Seminarunterlage. Version vom
Seminarunterlage Version: 12.16 Version 12.16 vom 12. Oktober 2017 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen
Kontrollstrukturen in PL/SQL
Kontrollstrukturen in PL/SQL.1 Bedingte Anweisungen... -2.1.1 Die IF-THEN-Anweisung... -2.1.2 Die IF-THEN-ELSE-Anweisung... -.1.3 Die IF-THEN-ELSIF-Anweisung... -.1. Die CASE-Anweisung... -6.2 Schleifen
Datenbanken 1 und Objektorientierte Datenbanken
Struktur eines PLSQL Blocks DECLARE Definition und Initialisierung 1 der im Block benutzten Variablen und Cursors EXCEPTION Wertzuweisungen, Operationen
<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.
Security-Basics Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update Carsten Czarski, ORACLE Deutschland B.V. Co. KG Themen Rechte, Rollen und PL/SQL: Grundsätzliches Invokers vs.
10. Programmieren in SQL
10. Programmieren in SQL Inhalt 10.1 Motivation 10.2 Prozedurale Erweiterungen von SQL 10.3 Gespeicherte Prozeduren 10.4 Benutzerdefinierte Funktionen 10.5 Verwendung anderer Programmiersprachen 2 10.1
[ SQL] Wissen, das sich auszahlt
[www.teia.de SQL] Wissen, das sich auszahlt INHALT SEITE 12 [I] 1] Einführung in SQL und relationale Datenbanken 12 14 16 18 11 1.1 1.2 Einführung Die Structured Query Language (SQL) Tabellen Mehrere Tabellen
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
Vorlesung Datenbanksysteme vom PL/SQL (von Oracle) Einführung Deklarationen Cursor Ablaufsteuerung Fehlerbehandlung stored program units
Vorlesung Datenbanksysteme vom 10.10.2007 PL/SQL (von Oracle) Einführung Deklarationen Cursor Ablaufsteuerung Fehlerbehandlung stored program units PL/SQL-Programmteile in der Vorlesung Folien: Enthalten
CADSTAR MRP-Link. MRP-Link ist erstellt von:
CADSTAR MRP-Link MRP-Link ist erstellt von: CSK CAD Systeme Kluwetasch Zip: 2161 Town: Altenholz Street: Struckbrook 9 Tel: +9-31-32917-0 Fax: +9-31-32917-26 Web: http://www.cskl.de E-Mail: [email protected]
PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
Schnellübersichten. SQL Grundlagen und Datenbankdesign
Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir
JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.
Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten
Logging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH
Logging und Debugging Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 OPITZ CONSULTING GmbH Seite 1 Agenda 1. Logging Datenmodell Tabellen Views 2. Debugging Debug-Package Funktionen
Abfragen (Queries, Subqueries)
Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl
Übersicht der wichtigsten MySQL-Befehle
Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit
Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement
Funktion definieren Gibt Summe der Gehälter zurück Aufruf in einem SQL-Statement Dr. Christian Senger Einführung PL/SQL 1 Procedures & Transaktionen CREATE OR REPLACE PROCEDURE write_log ( log_code IN
Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching
Neuerungen in 12.2 Marco Patzwahl MuniQSoft GmbH Unterhaching Schlüsselworte Neuerungen in 12.2, DBA Einleitung Jede neue Datenbankversion bringt diverse Neuerungen mit. Nur welche sind wichtig und welche
PL/SQL-Code mit APEX generieren
PL/SQL-Code mit APEX generieren DOAG-Webinar am 13.06.2013 Andreas Wismann WHEN OTHERS Beratung Programmierung Coaching rund um Oracle Application Express [email protected] http://when-others.com
Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
ÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
Vorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.
MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt
Unterprogramme. Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen:
Unterprogramme Dr. Wolfgang Günther Unterprogramme 2 Unterprogramme Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen: Prozeduren
Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen
(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
Collections in PL/SQL
Collections in PL/SQL Dr. Frank Haney Consultant Jena Schlüsselworte: Datenbankentwicklung, PL/SQL, Collections Zum Gegenstand Mit der Version 7.0 (1992!) hat Oracle in Ergänzung der skalaren mengenwertige
Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.
2 Grundlagen von PL/SQL Grundelemente von PL/SQL. 2.1 Übersicht Themen des Kapitels Grundlagen von PL/SQL Themen des Kapitels PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren Im Kapitel Grundlagen
Vergessene (?) SQL- und PL/SQL- Funktionen
Vergessene (?) SQL- und PL/SQL- Funktionen Folge 1 Vortrag DOAG-Regiogruppe Freiburg/Südbaden 29.01.13 bulk collect (1) Aufgabenstellung: ca. 50.000 eingelesene Werte an Hand einer ID auf eine vorhandene
Übung PL/SQL Trigger Lösungen
Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde
Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
SQL (Structured Query Language) Schemata Datentypen
2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
Relationales Datenbanksystem Oracle
Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information
Objektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,
Tipps & Tricks: Objektorientierung Bereich: PLSQL Erstellung: 032001 HA Versionsinfo: 9.2, 10.2, 11.1 Letzte Überarbeitung: 062009 HA Objektorientierung unter Oracle Objektorientierung unter Oracle richtet
Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1
Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit
Vorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss
Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei
C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
Einführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz
Oracle 12c: Neuerungen in PL/SQL Roman Pyro DOAG 2014 Konferenz Herrmann & Lenz Services GmbH Herrmann & Lenz Solutions GmbH Erfolgreich seit 1996 am Markt Firmensitz: Burscheid (bei Leverkusen) Beratung,
Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel
Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten
Oracle Virtual Private Database
Oracle Virtual Private Database Rolf Wesp Consultant Application Development [email protected] Düsseldorf, September 2008 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg
Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie
3 Inhaltsverzeichnis 1 Einführung in die Datenbanktechnologie 1.1 Einleitung... 8 1.1.1 Zielsetzung... 8 1.1.2 Aufbau des Studienbuches... 9 1.1.3 Abgrenzung... 10 1.2 Grundbegriffe... 10 1.3 Datenbanksysteme...
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Java: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators
Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer [email protected] [email protected]
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Kontrollstrukturen Was sind Kontrollstrukturen Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,
Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern
Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung
Programmiertechnik Kontrollstrukturen
Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Kontrollstrukturen? Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,
Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL
Cursor Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL Cursor sind grob vergleichbar mit Iteratoren in modernen Programmiersprachen wie Java;
Tutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue
Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem
FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel
Inhalt: Vorbemerkung...1 Allgemeines zu Shell Scripts...1 Aufruf...1 Einfaches Beispiel...1 Testen eines Shell-Scripts...2 Kommandozeilen-Parameter...2 Prozeßsteuerung...3 Bedingte Ausführung: if...3 Mehrfachentscheidung:
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Es geht also im die SQL Data Manipulation Language.
1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.
5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009
Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger
