23
Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken – Christian Goldberg Prakt. Datenbankprogrammierung Sommersemester 2005 II,1: Deklaration von Variablen

Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

Embed Size (px)

Citation preview

Page 1: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken – Christian Goldberg

Prakt. Datenbankprogrammierung

Sommersemester 2005

II,1: Deklaration von Variablen

Page 2: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 3: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 4: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 5: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 6: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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).

Page 7: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 8: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 9: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 10: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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.

Page 11: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 12: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

Page 13: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

II-24 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg

Variablen-Initialisierung und Schlüsselwörter

Verwendung• := Zuweisungsoperator

• DEFAULT

• NOT NULL

Page 14: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 15: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 16: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 17: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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

Page 18: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;

...

Page 19: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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.

Page 20: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

II-31 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg

Zusammengesetzte Datentypen

TypenTypen

• PL/SQL-TABELLEN

• PL/SQL-RECORDS

Page 21: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

II-32 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg

Variable vom Datentyp LOBRecipeRecipe(CLOB)(CLOB)

PhotoPhoto(BLOB)(BLOB)

MovieMovie(BFILE)(BFILE)

NCLOBNCLOB

Page 22: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

II-33 Prakt. Datenbankprogrammierung SS05 – Christian Goldberg

Bind-Variable

Server

O/SO/SBindBind--VariableVariable

Page 23: Prakt. Datenbankprogrammierung Sommersemester 2005dbs.informatik.uni-halle.de/Lehre/PrakDB_SS05/PrakDB05_grII1.pdfMartin-Luther-Universität Halle, Institut für Informatik, Datenbanken

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;