DB2 Universal Database - Systemverwaltung


Erstellen eines benutzerdefinierten Datentyps (UDT)

Ein benutzerdefinierter Datentyp (UDT) ist ein benannter Datentyp, der in der Datenbank durch den Benutzer erstellt wird. Ein UDT kann ein einzigartiger Datentyp sein, der eine gemeinsame Darstellung mit einem integrierten Datentyp oder einem strukturierten Typ hat, der eine Folge benannter Attribute mit jeweils einem Typ aufweist. Ein strukturierter Typ kann ein untergeordneter Typ eines anderen strukturierten Typs (eines sogenannten übergeordneten Typs) sein, wodurch eine Typenhierarchie definiert wird.

UDTs unterstützen Eingabe mit festgelegtem Datentyp, was bedeutet, daß sie die gleiche Darstellung wie andere Typen haben. Werte eines bestimmten UDTs sind nur mit Werten des bzw. der gleichen UDTs in der gleichen Typenhierarchie kompatibel.

Mit der Katalogsicht SYSCAT.DATATYPES können die benutzerdefinierten Datentypen, die für die Datenbank definiert wurden, angezeigt werden. Diese Katalogsicht zeigt darüber hinaus die Datentypen, die bei der Erstellung der Datenbank vom Datenbankmanager definiert wurden. Eine vollständige Liste aller Datentypen finden Sie im Handbuch SQL Reference.

Ein benutzerdefinierter einzigartiger Typ kann für die meisten der vom System bereitgestellten bzw. integrierten Funktionen nicht als Argument verwendet werden. Zur Implementierung dieser und anderer Operationen müssen daher benutzerdefinierte Funktionen bereitgestellt werden.

Ein benutzerdefinierter Datentyp kann nur unter folgenden Bedingungen gelöscht werden:

Wenn ein benutzerdefinierter Datentyp gelöscht wird, werden alle von ihm abhängigen Funktionen ebenfalls gelöscht.

Erstellen eines benutzerdefinierten einzigartigen Datentyps

Ein benutzerdefinierter einzigartiger Datentyp ist ein von einem vorhandenen Typ wie "ganze Zahl", "Dezimalzahl" oder "Zeichen" abgeleiteter Datentyp. Sie können einen einzigartigen Datentyp mit Hilfe der Anweisung CREATE DISTINCT TYPE erstellen.

Mit der folgenden SQL-Anweisung wird der einzigartige Datentyp t_educ als ein SMALLINT-Typ erstellt:

   CREATE DISTINCT TYPE T_EDUC AS SMALLINT WITH COMPARISONS

Exemplare desselben einzigartigen Datentyps können miteinander verglichen werden, wenn die Klausel WITH COMPARISONS in der Anweisung CREATE DISTINCT TYPE angegeben wird (wie im Beispiel). Die Klausel WITH COMPARISONS kann nicht angegeben werden, wenn der Quellendatentyp ein großes Objekt oder DATALINK, LONG VARCHAR bzw. LONG VARGRAPHIC ist.

Exemplare einzigartiger Typen können nicht als Argumente von Funktionen oder als Operanden für Operationen, die für den Quellentyp definiert wurden, verwendet werden. Auch kann ein Quellendatentyp nicht in Argumenten oder Operanden verwendet werden, die zur Verwendung eines einzigartigen Datentyps definiert wurden.

Wenn ein einzigartiger Datentyp erstellt ist, kann er in Spaltendefinitionen einer Anweisung CREATE TABLE verwendet werden:

   CREATE TABLE EMPLOYEE
      (EMPNO      CHAR(6)      NOT NULL,
       FIRSTNME   VARCHAR(12)  NOT NULL,
       LASTNAME   VARCHAR(15)  NOT NULL,
       WORKDEPT   CHAR(3),
       PHONENO    CHAR(4),
       PHOTO      BLOB(10M)    NOT NULL,
       EDLEVEL    T_EDUC)
   IN RESOURCE

Das Erstellen des einzigartigen Datentyps generiert auch Unterstützung für das Umsetzen zwischen dem einzigartigen Datentyp und dem Quellendatentyp. Daher kann ein Wert des Typs T_EDUC in einen SMALLINT-Wert und ein SMALLINT-Wert in einen T_EDUC-Wert umgesetzt werden.

Vollständige Syntaxinformationen zur Anweisung CREATE DISTINCT TYPE finden Sie im Handbuch SQL Reference. Informationen zum Erstellen und Verwenden eines einzigartigen Datentyps finden Sie im Handbuch Application Development Guide.

Mit Hilfe von Umsetzungen können Sie benutzerdefinierte Datentypen in Basisdatentypen und Basisdatentypen in benutzerdefinierte Datentypen umsetzen. Eine Umsetzungsfunktion kann mit der Anweisung CREATE TRANSFORM erstellt werden.

Unterstützung für Umsetzungen kann auch durch die Anweisung CREATE METHOD sowie durch Erweiterungen der Anweisung CREATE FUNCTION bereitgestellt werden. Einzelheiten zur dieser Unterstützung finden Sie im Handbuch SQL Reference.

Erstellen eines benutzerdefinierten strukturierten Typs

Ein strukturierter Typ ist ein benutzerdefinierter Typ, der ein oder mehrere Attribute enthält, die jeweils über einen eigenen Namen und Datentyp verfügen. Ein strukturierter Typ kann als Typ für eine Tabelle dienen, in der jede Tabellenspalte ihren Namen und Datentyp aus einem der Attribute des strukturierten Typs ableitet. Umfassende Informationen zu strukturierten Typen finden Sie im Handbuch Application Development Guide.

Erstellen einer Typenzuordnung

In Systemen zusammengeschlossener Datenbanken können Sie mit Hilfe einer Typenzuordnung spezifische Datentypen von Datenquellentabellen und -sichten den einzigartigen DB2-Datentypen zuordnen. Eine Typenzuordnung kann für eine einzelne Datenquelle oder einen Bereich (Typ, Version) von Datenquellen gelten.

Standardzuordnungen für Datentypen werden für integrierte Datenquellentypen und integrierte DB2-Typen bereitgestellt. Neue (von Ihnen erstellte) Datentypenzuordnungen werden in der Sicht SYSCAT.TYPEMAPPINGS aufgelistet.

Typenzuordnungen können Sie mit der Anweisung CREATE TYPE MAPPING erstellen. Sie müssen über die Berechtigung SYSADM oder DBADM für die zusammengeschlossene Datenbank verfügen, um diese Anweisung verwenden zu können.

Ein Beispiel für eine Typenzuordnungsanweisung:

   CREATE TYPE MAPPING MY_ORACLE_DEC FROM SYSIBM.DECIMAL(10,2)
   TO SERVER ORACLE1 TYPE NUMBER([10..38],2)

Für LOB, LONG VARCHAR/VARGRAPHIC, DATALINK sowie für strukturierte und einzigartige Typen können Sie keine Typenzuordnung erstellen.

Einzelheiten zum Verwenden und Erstellen von Typenzuordnungen finden Sie im Handbuch Application Development Guide. Einzelheiten zur Syntax von CREATE TYPE MAPPING finden Sie im Handbuch SQL Reference.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]