抽象データ・タイプまたは構造データ・タイプは、複雑なオブジェクトをモデル化してリレーショナル・データベースに保管するためのタイプ・メカニズムです。構造タイプには、複数のフィールドを組み込むことができます。たとえば、幾何学形状 (デカルト座標のリスト) や、社員 (氏名、住所、性別、生年月日、および社員番号) をモデル化して DB2 ユニバーサル・データベースに保管することができます。
構造タイプのサポートが拡張され、構造タイプの列をもつ表を作成できるようになりました。さらに、構造タイプを構造タイプ内にネストすることもできます。つまり、今後は、構造タイプの属性は基本の SQL タイプにだけ限定されるものではなく、別の構造タイプのものにしてもかまわないということです。
バージョン 7 では、入力パラメーターを指定するか、または構造タイプである RETURNS 文節上のパラメーターを指定して、関数を定義することができます。また、各構造化データ・タイプごとにメソッド を定義することもできます。これは、データを使って振る舞いをカプセル化するためのものです。メソッドは、関数とほぼ同じように定義しますが、その使用先は、構造タイプに厳密に限られます。これは基本的に、暗黙の第 1 引き数として構造タイプ・インスタンスをもつルーチンです。
Reorganize Table (REORG) および db2look ユーティリティーは、構造タイプ列をもつ表で使用することができます。 REORG の詳細についてはコマンド解説書 を、構造タイプおよび db2look の詳細については、 管理の手引き: インプリメンテーション および管理の手引き: パフォーマンス を参照してください。
変換関数を使うと、ユーザー作成プログラムで構造タイプ列を使用することができます。変換関数は、構造化データ・タイプの複雑な構造を、基本 SQL タイプの順序セットに変換します。またこれは、基本属性を元の構造タイプにも変換します。これらの変換は、データベースから構造タイプを出し入れする場合に必要です。詳細については、管理の手引き: インプリメンテーション を参照してください。
SQL-bodied 関数では、その本体内に簡単な SQL プロシージャー・ステートメントが入っていますが、これは、呼び出し側の SQL に組み込まれています (マクロと同様に)。そのため、照会コンパイラーは、 SQL-bodied 関数を含め SQL ステートメント全体を最適化できます。構造化データ・タイプは、変換関数 (変換関数を参照) とメソッド (構造タイプを参照) で SQL-bodied 関数を使います。
DB2 バージョン 7.2 では、動的複合ステートメントという新しいタイプの複合 SQL が提供されており、データベース・マネージャーのオーバーヘッドを減らし、ネットワークを介して要求を処理する際のパフォーマンスを向上させるのに役立ちます。動的複合ステートメントは、制御フロー論理をほとんど含まないものの、有効なデータ・フローが含まれる短いスクリプトに理想的です。
動的複合ステートメント内では、以下のことを行えます。
DB2 は動的複合ステートメントを単一ステートメントとしてコンパイルします。詳細については、DB2 リリース情報 を参照してください。
DB2 バージョン 7.2 では、ストアード・プロシージャー、トリガー、および SQL 関数において、多くの SQL 制御ステートメントによって手続き論理を実行できるようになっています。
バージョン 7.2 以前では、トリガーは単純順序付けを提供しているだけで、条件付き論理やループはありませんでした。トリガーへのこの機能強化により、使用しているアプリケーションから DB2 への移行がさらに容易になりました。また、SCALAR、TABLE、または ROW などの SQL 関数への機能強化も効果があります。たとえば、他のデータベース管理システムを DB2 にマップする場合に、 SQL 表関数にデータ・ウェアハウス・センターの制御ロジックを指定して使用することも、または SQL スカラー関数を使用することもできます。
バージョン 7.2 を使用すると、トリガーおよびSQL 関数に以下の制御ステートメントを使用できます。
制御ステートメントは、DB2 照会コンパイラーに統合されています。 SQL 制御ステートメントおよび変数の詳細については、 SQL 解説書 を参照してください。このバージョン 7.2 機能強化の詳細については、 DB2 リリース情報 を参照してください。
現在、タイプ付き表で、参照保全性制約とトリガーを使用することができます。