TABLE-OF-INDEX-BY-BINARY-INTEGER

Oracle PL/SQL bietet die Möglichkeit, Variablen als eine Art ARRAY zu definieren, als eine Liste variabler Länge. Für die TYP-Sepzifikation wird das Konstrukt TABLE OF <datentyp> INDEX BY BINARY_INTEGER verwendet. Anstelle von INDEX BY BINRAY INTEGER ist auch INDEX BY PLS_INTEGER oder INDEX BY VARCHAR2 möglich. Dieses Konstrukt wird auch als PL/SQL-Tabelle oder assiotiatives Array bezeichnet.

Da nur ein Datentyp angegeben werden kann, handelt es sich hier grundsätzlich um ein eindimensionales ARRAY. Diese Restriktion kann umgangen werden, indem anstelle des <datentyp> ein RECORD-Datentyp? verwendet wird.

Um auf einzelne Einträge innerhalb dieser PL/SQL-Tabelle zuzugreifen, werden die Einträge indexiert mit variablenname(integer). Wenn ein RECORD-Datentyp zugrunde liegt, wird wie folgt zugegriffen: variablenname(integer).spaltenname.

Syntax der PL/SQL-Tabelle:

  TYPE Tab_Typname IS TABLE OF <Datentyp> INDEX BY BINARY_INTEGER;
  Index_by_Tabellenname Tab_Typname;

Beispiele:

  -- ein eindimensionaler Zahlen-ARRAY variabler Länge 
  TYPE Zahlen_TT IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  VT_Zahlen      Zahlen_TT;
  BEGIN
    VT_Zahlen(12) := 33;
    IF  VT_Zahlen(v_index) THEN ... END IF; 
  END;

  -- Spezfikation eines Datensatztyps und einer zugehörigen ARRAY-Variablen 
DECLARE TYPE Student_RT IS RECORD (Vorname VARCHAR2(20), Nachname VARCHAR2(20), Geschlecht CHAR(1)); TYPE Student_Array IS TABLE OF Student_RT INDEX BY BINARY_INTEGER; V_Student Student_Array; BEGIN V_Student(1).Geschlecht := 'M'; IF V_Student(1).Geschlecht = 'W' THEN NULL; END IF; END;

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, D