DB2 エクステンダーはデータベース内の画像、音声、およびビデオ・データを保管、アクセス、および操作するユーザー定義関数を提供します。 アプリケーション・プログラムでこれらの UDF を要求するコーディングをするには、SQL 組み込み関数を要求するのと同じように、SQL ステートメントを使います。 組み込み関数と同様に、UDF はデータベース・サーバーで実行されます。
C のアプリケーション・プログラムから次の SQL ステートメントを実行すると、DB2Image という名前のイメージ・エクステンダー UDF が画像をデータベース表に保管します。 ソース・イメージの内容はサーバー・ファイルにあります。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', /*id*/ 'Anita Jones', /*name*/ DB2IMAGE( /*Image Extender UDF*/ CURRENT SERVER, /*database */ '/employee/images/ajones.bmp', /*image content*/ 'ASIS', /*keep the image format*/ :hvStorageType, /*store image in DB as BLOB* 'Anita''s picture') /*comment*/ );
エクステンダーのアプリケーション・プログラミング・インターフェース (API) は、画像を表示し、音声やビデオのオブジェクトを再生するためにも使用することができます。 これらの API をコーディングするには、C のクライアント関数呼び出しを使います。 これらの関数は、データベース・クライアント・ワークステーションで実行されます。
次の C ステートメントには、DBiBrowse という名前の API が組み込まれています。 API は画像ハンドルのデータを検索してから、次のようにブラウザーを開始して画像を表示します。
EXEC SQL BEGIN DECLARE SECTION; char hvImg_hdl[251]; EXEC SQL END DECLARE SECTION EXEC SQL SELECT PICTURE INTO :hvImg_hdl WHERE NAME= 'Robert Smith'; rc=DBiBrowse( "ib %s", /*image browser*/ MMDB_PLAY_HANDLE, /*use image handle*/ hvImg_hdl, /*image handle*/ MMDB_PLAY_NO_WAIT); /*run browser independently*/
UDF はインスタンスのユーザー ID で実行しなければなりません: DB2 エクステンダー UDF は、DB2 エクステンダー・インスタンスと同じユーザー ID で実行しなければなりません。 さらに、DB2 エクステンダー・インスタンスを作成したり、既存の DB2 エクステンダー・インスタンスを使用する場合には、UDF を DB2 インスタンスと同じユーザー ID で実行しなければなりません。
DB2 の構成が適正でなければなりません: DB2 エクステンダー、特に DB2 エクステンダー UDF が適正に操作されるようにするには、DB2 の構成が適正でなければなりません。 とりわけ、APP_CTL_HEAP_SZ データベース構成パラメーターの設定が適正でなければなりません。