管理の手引き


ユーザー定義タイプ (UDT) の作成

ユーザー定義タイプ (UDT) は、 データベース内でユーザーによって作成される名前付きデータ・タイプです。 UDT は、 それぞれがタイプを持つ名前付き属性の順序がある組み込みデータ・タイプまたは構造型と、 共通表示を共用する特殊タイプとなることができます。 構造型はタイプ階層を定義しますが、 別の構造型 (スーパータイプと呼ばれる) のサブタイプとなることができます。

UDT は、強い型指定をサポートしています。 これは、UDT が他のタイプと同じ表示を共用していても、 指定された UDT の値が同じタイプ階層の同じ UDT (複数も可) の値とのみ互換性のあるものと見なされるという意味です。

SYSCAT.DATATYPES カタログ視点を使用して、 データベース用に定義された UDT を見ることができます。 このカタログ視点では、 データベースの作成時にデータベース・マネージャーが定義したデータ・タイプも示しています。 すべてのデータ・タイプのリストについては、SQL 解説書 を参照してください。

UDT は、ほとんどのシステム提供関数 (組み込み関数) には引き数として使用することはできません。 これらの演算子や他の演算子を使用するには、ユーザー定義関数を作成する必要があります。

以下の場合にのみ、UDT を除去することができます。

UDT を除去すると、それに従属する関数があれば、それも除去されます。

ユーザー定義特殊タイプの作成

ユーザー定義特殊タイプは、整数、10 進数、または文字タイプなど、 既存のタイプから導出されたタイプです。 特殊タイプは、CREATE DISTINCT TYPE ステートメントを使用して作成することができます。

次の SQL ステートメントは、 特殊タイプ t_educ を smallint として作成するものです。

   CREATE DISTINCT TYPE T_EDUC AS SMALLINT WITH COMPARISONS

例にあるように、 WITH COMPARISONS 文節が CREATE DISTINCT TYPE ステートメントで指定された場合には、 同じ特殊タイプのインスタンスを相互に比較することができます。 WITH COMPARISONS 文節は、 ソース・データがラージ・オブジェクト、DATALINK、LONG VARCHAR、 または LONG VARGRAPHIC タイプである場合は、指定できません。

特殊タイプのインスタンスは、 ソース・タイプに定義された関数の引き数または操作のオペランドとして使用することはできません。 同様に、ソース・タイプは、 特殊タイプを使用するよう定義された引き数またはオペランドの中で使用することはできません。

特殊タイプを作成したなら、それを使用して、 CREATE TABLE ステートメントに列を定義することができます。

   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

特殊タイプを作成すると、 特殊タイプとソース・タイプ間のキャストもサポートされるようになります。 したがって、タイプ T_EDUC の値を SMALLINT 値にキャストすることができ、 SMALLINT 値を T_EDUC 値にキャストすることができます。

CREATE DISTINCT TYPE ステートメントの構文に関する完全な情報については、 SQL 解説書 を参照してください。 特殊タイプの作成および使用についての詳細は、アプリケーション開発の手引き を参照してください。

変換を利用して、UDT を基本データ・タイプに、 基本データ・タイプを UDT に変換することができます。 変換関数は CREATE TRANSFORM ステートメントによって作成します。

変換のサポートは、CREATE METHOD ステートメントおよび CREATE FUNCTION ステートメントの拡張形式の中にも見られます。 このサポートについての詳細は、SQL 解説書 を参照してください。

ユーザー定義構造型の作成

構造型は、1 つまたは複数の属性が入ったユーザー定義タイプで、 個々のタイプは独自の名前とデータ・タイプを持っています。 構造型は表のタイプの役割を果たし、 その表の各列は、構造型の属性の 1 つから名前とデータ・タイプを取得します。 構造型に関する必要なすべての情報については、 アプリケーション開発の手引き を参照してください。

タイプ・マッピングの作成

統合システムでは、タイプ・マッピングにより、 データ・ソース内の特定データ・タイプと DB2 特殊データ・タイプの視点をマップできます。 タイプ・マッピングは、1 つのデータ・ソース、 またはデータ・ソースのある範囲 (タイプ、バージョン) に適用できます。

組み込みデータ・ソース・タイプおよび組み込み DB2 タイプには、 省略時のデータ・タイプ・マッピングが用意されています。 新規データ・タイプ・マッピング (ユーザーが作成するもの) は、 SYSCAT.TYPEMAPPINGS 視点にリストされます。

タイプ・マッピングは、CREATE TYPE MAPPING ステートメントを使って作成します。 このステートメントを使用するには、 統合データベースで SYSADM または DBADM 権限のいずれかを持っている必要があります。

タイプ・マッピング・ステートメントの例は、次のとおりです。

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

LOB、LONG VARCHAR/VARGRAPHIC、DATALINK、構造型、 または特殊タイプ用のタイプ・マッピングを作成することはできません。

タイプ・マッピングの使用および作成についての詳細は、 アプリケーション開発の手引き を参照してください。 CREATE TYPE MAPPING 構文についての詳細は、SQL 解説書 を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]