Upload
phungdat
View
213
Download
0
Embed Size (px)
Citation preview
Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken – Christian Goldberg
Prakt. Datenbankprogrammierung
Sommersemester 2005
II,1: Deklaration von Variablen
II-13 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
PL/SQL Block-Struktur
• DECLARE – Optional
– Variablen, Cursor, nutzer-definierteExceptions
• BEGIN – Notwendig
– SQL-Statements
– PL/SQL-Statements
• EXCEPTION – Optional
– Auszuführende Aktionen beimAuftreten von Fehlern
• END; – Notwendig
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
II-14 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
PL/SQL Block-Struktur
DECLAREv_variable VARCHAR2(5);
BEGINSELECT column_nameINTO v_variableFROM table_name;
EXCEPTIONWHEN exception_name THEN...
END;
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
II-15 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Block-Typen
AnonymAnonym ProzedurProzedur FunktionFunktion
[DECLARE][DECLARE]
BEGINBEGIN----StatementsStatements
[EXCEPTION][EXCEPTION]
END;END;
PROCEDURE NamePROCEDURE NameISIS
BEGINBEGIN----StatementsStatements
[EXCEPTION][EXCEPTION]
END;END;
FUNCTION NameFUNCTION NameRETURN DatentypRETURN DatentypISISBEGINBEGIN
----StatementsStatementsRETURN Wert;RETURN Wert;
[EXCEPTION][EXCEPTION]
END;END;
II-16 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Verwendung von Variablen
Verwende Variable für:Verwende Variable für:
• Temporäre Speicherung von Daten
• Manipulation von gespeicherten Werten
• Wiederverwendung
• Einfache Verwaltung
II-17 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Verwendung von Variablen in PL/SQL
• Deklaration und Initialisierung innerhalb des Deklarationsteils.
• Zuweisung von neuen Werten innerhalb des ausführbaren Teils.
• Übergabe an andere PL/SQL-Blöcke über Parameter.
• Ausgabe von Ergebnissen über Ausgabevariablen (output variables).
II-18 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Arten von Variablen
• PL/SQL-Variable
– Skalar
– Zusammengesetzt (composite)
– Referenz
– LOB (large objects)
• Nicht-PL/SQL-Variable
– Bind- und Host-Variable
II-19 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
TRUE
Arten von Variablen25-OCT-99
Atlanta
“Four score and seven years ago
our fathers brought forth upon
this continent, a new nation,
conceived in LIBERTY, and dedicated
to the proposition that all men
are created equal.”256120.08
II-20 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Deklaration von PL/SQL-Variablen
SyntaxSyntax
BeispieleBeispiele
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
Declarev_hiredate DATE;v_deptno NUMBER(2) NOT NULL := 10;v_location VARCHAR2(13) := 'Atlanta';c_ comm CONSTANT NUMBER := 1400;
II-21 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Deklaration von PL/SQL-Variablen
RegelnRegeln
• Anwendung der Namens-Konventionen.
• Initialisierung von als NOT NULL ausge-wiesenen Variablen.
• Initialisierung von Identifiern mit dem Zuweisungsoperator (:=) oder mit dem Schlüsselwort DEFAULT.
• Höchstens eine Deklaration pro Zeile.
II-22 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Namens-Konventionen
• Zwei Variablen können denselben Namen nur in unterschiedlichen Blöcken verwenden.
• Der Variablenname (Identifier) sollte nicht mit einem im selben Block verwendeten Spalten-namen übereinstimmen.
DECLAREempno NUMBER(4);
BEGINSELECT empnoINTO empno
FROM empWHERE ename = 'SMITH';
END;
II-23 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Wertzuweisung an Variablen
v_ename := 'Maduro';
v_hiredate := '31-DEC-98';
SyntaxSyntax
BeispieleBeispiele
Setzen eines vordefinierten HIREDATE für Setzen eines vordefinierten HIREDATE für neueingestellteneueingestellte Angestellte. Angestellte.
Ändern des Namens auf “Ändern des Namens auf “MaduroMaduro.” .”
identifier := expr;
II-24 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Variablen-Initialisierung und Schlüsselwörter
Verwendung• := Zuweisungsoperator
• DEFAULT
• NOT NULL
II-25 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Skalare Datentypen
• Speichern einen einzelnen Wert
• Haben keine internen Komponenten
25-OCT-99
Atlanta
“Four score and seven years
ago our fathers brought
forth upon this continent, a
new nation, conceived in
LIBERTY, and dedicated to
the proposition that all men
are created equal.”
TRUE
256120.08
II-26 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Skalare Basistypen• VARCHAR2 (maximum_length)
• NUMBER [(precision, scale)]
• DATE
• CHAR [(maximum_length)]
• LONG
• LONG RAW
• BOOLEAN
• BINARY_INTEGER
• PLS_INTEGER
II-27 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Skalare Variablen-Deklaration
v_job VARCHAR2(9);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0;v_orderdate DATE := SYSDATE + 7;c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;
BeispieleBeispiele
II-28 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Das %TYPE-Attribut
• Deklaration einer Variablen bezüglich:
– Einer Datenbank-Spalten-Definition
– Einer anderen deklarierten Variablen
• Präfix des %TYPE-Attributs:
– Datenbank-Tabelle und -Spalte
– Name der deklarierten Variablen
II-29 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Variablen-Deklaration mit dem %TYPE-Attribut
BeispieleBeispiele...
v_ename emp.ename%TYPE;v_balance NUMBER(7,2);v_min_balance v_balance%TYPE := 10;
...
II-30 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Deklaration boolescher Variablen
• Nur Zuweisung der Werte TRUE, FALSE und NULL möglich.
• Verknüpfung der Variablen untereinander mit den logischen Operatoren AND, OR und NOT.
• Die Variablen sind immer entweder TRUE, FALSE oder NULL.
• Arithmetische, Zeichen- oder Datumsaus-drücke können boolesche Werte zurückgeben.
II-31 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Zusammengesetzte Datentypen
TypenTypen
• PL/SQL-TABELLEN
• PL/SQL-RECORDS
II-32 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Variable vom Datentyp LOBRecipeRecipe(CLOB)(CLOB)
PhotoPhoto(BLOB)(BLOB)
MovieMovie(BFILE)(BFILE)
NCLOBNCLOB
II-33 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Bind-Variable
Server
O/SO/SBindBind--VariableVariable
II-34 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg
Referenzieren von Nicht-PL/SQL-Variablen
Speichern des Monatsgehalts in einer Speichern des Monatsgehalts in einer SQL*PlusSQL*Plus--HostHost--VariablenVariablen..
• Referenzieren von Nicht-PL/SQL-Variablen als Host-Variable.
• Voranstellen eines Doppelpunktes vor die Referenz (:).
:g_monthly_sal := v_sal / 12;