| Arbeiten mit Records |
|
|
| Donnerstag, 16. Oktober 2008 um 14:50 | ||||
|
PL/SQL unterstützt drei verschiedene Typen von Records: tabellenbasierte, cursorbasierte und selbstdefinierte Records. Alle diese Typen werden verschieden benutzt, haben aber die gleiche interne Struktur. Jeder Record besteht aus einem oder mehreren Feldern. Das Feld eines selbstdefinierten Records kann wiederum selbst ein Record sein.
Vorteile von RecordsEinfachheit ist der wohl wichtigste Grund. Es ist sehr viel einfacher, einen Records zu referenzieren als alle einzelnen Spalten einer Tabelle oder alle Spalten eines CURSOR-SELECT Statements. Tabellenbasierte RecordsEin tabellenbasierter Record beruht in seinem Aufbau auf der Struktur einer Tabelle. Jedes Feld des Records entspricht einer Spalte der Tabelle, auf die wir uns bei der Deklaration des Records beziehen. Die Deklaration von tabellenbasierten Records erfolgt über das %ROWTYPE Attribut. Das Format der Deklaration ist also
Erinnern Sie sich an die verankerte Deklaration mit Hilfe des TYPE beziehen wir uns auf den (skalaren) Datentypen einer Spalte. Über %ROWTYPE beziehen wir uns auf den Aufbau der gesamten Tabelle. Cursorbasierte RecordsEin cursorbasierter Record beruht auf dem Aufbau des SELECT-Statements. Jedes Feld im Record korrespondiert mit einem Spaltennamen oder Ausdruck aus dem Cursor. Cursorbasierte Records machen es sehr einfach, eine Datenstruktur bereitzustellen, die die Spaltenwerte des Cursors aufnehmen kann. Wir beziehen uns bei der Deklaration wieder mit %ROWTYPE auf eine vorhandene Struktur. Diesmal nicht auf eine Tabelle, sondern auf einen Cursor.
Referenzieren von RecordsUm das Feld eines Records anzusprechen, wird das Feld wie folgt referenziert:
Der Attributname muß stets komplett ausgeschrieben werden. Soll der gesamte Record referenziert werden, reicht es, den Namen des Records anzugeben. Selbstdefinierte RecordsEs ist möglich, Recordstrukturen zu erzeugen, die weder etwas mit Tabellen noch mit Cursors zu tun haben. Ich beschreibe sie hier nur der Vollständigkeit halber, selber benutze ich sie so gut wie nie, denn meist erreicht man mit erstgenannten Records schneller das Ziel. Die Syntax, um eigene Records zu deklarieren, ist folgende:
Auch hier ist es möglich, den einzelnen Feldern einen Initialwert zuzuordnen. Verschachtelte recordsWeiterhin ist er möglich, Recordstrukturen zu bauen, die ihrerseits wieder auf Records basieren. An dieser Stelle sei lediglich erwähnt, dass es möglich ist, ohne weiter darauf einzugehen. Verschachtelte Records werden in Verbindung mit PL/SQL Tabellen wieder interessant. Records zuweisen und vergleichenDie Zuweisung von Recordvariablen an andere Recordvariablen gleichen Typs ist möglich, sie müssen aber den GLEICHEN Typ haben. Selbst wenn Sie zwei Typen deklarieren, die völlig identisch sind, wird ein Recordvergleich scheitern. Ein Recordvergleich scheitert in jedem Fall.
Damit haben wir den ersten komplexen Datentyp kennengelernt. Nun existieren noch die PL/SQL Tabellen …
|
||||

