TYPE

Oracle PL/SQL bietet die Möglichkeit, Variablendefinitionen unmitelbar auf Spaltendefinitionen basieren zu lassen. Dazu wird bei der Variablendeklaration anstelle des Datentyps Tabellenname.Spaltenname%TYPE angegeben.

Vorteile dieser %TYPE-Spezifikation sind zum einen, dass bei der Programmierung die einzelne Spaltendefinition nicht bekannt sein muss, und zum anderen, dass wenn sich die Spaltendefinition ändert (anderer Datentyp, neue Länge, ...), die Änderung automatisch für die Variablendefinition übernommen wird. Die Änderung der Tabellenstruktur hat zur Folge, dass alle abhängigen Datenbank-Objekte, wie z.B. die PL/SQL-Blöcke, die diese Spalte referenzieren, z.B. über %TYPE, automatisch auf "invalid" gesetzt werden. Soll ein "invalider" PL/SQL-Block vom DBMS? ausgeführt werden, so kompiliert das DBMS zuerst einmal autoamtisch ohne Zutun des Anwenders diesen Block damit dieser den Zustand "valid" annimmt und ausgeführt werden kann.

Werden alle Spalten einer Tabelle benötigt, so kann man die %ROWTYPE-Spezifikation verwenden.

Beispiele:

  -- Variable bezogen auf eine Spaltendefinition
-- automatische Anpassung bei Änderungen an der Spaltendefinition
V_Einzelteil_TNr Teile.TNr%TYPE; -- Verwendung im Ausführungsteil IF V_Einzelteil_TNr > 1000 THEN ... END IF;

siehe auch: DECLARE

Quellen:

  • Faeskorn-Woyke, Heide; Bertelsmeier, Birgit; Riemer, Petra; Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Feuerstein, Steven, Pribyl. Bill: "Oracle PL/SQL Programming", O'Reilly, 2009, ISBN-13: 978-0596514464
  • Oracle® Database SQL Language Reference 11g Release 1 (11.1) in http://docs.oracle.com/cd/B28359_01/server.111/b28286/toc.htm
  • Oracle® Database PL/SQL Language Reference 11g Release 2 (11.2) in http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/toc.htm
  • Saurabh, Gupta: "Oracle Advanced PL/SQL Developer Professional Guide", Packt Publishing Limited, 2012, ISBN 978-1-84968-722-5

Kategorie: Oracle-PL-SQL, T