Content UDF を使えば、形式変換をせずに画像、音声、ビデオのオブジェクトをクライアント・バッファーかクライアント・ファイルに取り出すことができます。 さらに取り出しの際に、その画像の形式をイメージ・エクステンダーによって変換することもできます。
LOB ロケーターを使用して、画像、音声、ビデオのオブジェクトをクライアント・バッファーに取り出すか、または LOB を取り出します。 画像、音声、ビデオのオブジェクトをクライアント・ファイルに取り出すには、ファイル参照変数を使用します。
オブジェクトの内容が BLOB としてデータベース表に保管されている場合、画像、音声、ビデオのオブジェクトをクライアント・バッファーまたはクライアント・ファイルへ取り出すには、ファイル参照変数が適しています。 内容がサーバー・ファイルにある場合は、その内容をサーバー・ファイルからクライアント・ファイルへコピーする方が効率的かもしれません。
オブジェクトのハンドルを指定します。 さらに、取り出しを開始するオフセット (バイト 1 から始まる) と、取り出すバイト数を指定することもできます。
C アプリケーション・プログラムの次のステートメントでは、audio_loc という LOB ロケーターを使って、音声クリップをクライアント・バッファーに取り出します。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR audio_loc; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT CONTENT( SOUND) /* audio handle */ INTO :audio_loc FROM EMPLOYEE WHERE NAME = 'Anita Jones';
UDF メモリーは十分とってください: 取り出すオブジェクトの内容がクライアント・バッファーにある場合は、データベース・マネージャー構成の UDF_MEM_SZ パラメーターを 4 MB 以上に設定することが必要です。
UDF_MEM_SZ パラメーターは、DB2 コマンドの UPDATE DATABASE MANAGER CONFIGURATION を使用すれば更新できます。
UPDATE DATABASE MANAGER コマンドの詳細については、DB2 コマンド解説書 を参照してください。
LOB ロケーターを使用して、保管イメージを形式変換してクライアント・ファイルに取り出すか、または LOB を取り出します。 保管イメージを形式変換してクライアント・ファイルに取り出すには、ファイル参照変数を使用します。
画像の内容が BLOB としてデータベース表に保管されている場合に、画像をホスト変数を使用してクライアント・バッファーに取り出したり、ファイル参照変数を使用してクライアント・ファイルに取り出すのが適しています。 内容がサーバー・ファイルにある場合は、その内容をサーバー・ファイルからクライアント・ファイルへコピーする方が効率的かもしれません。
画像を形式変換して取り出す場合には、そのターゲット形式 (つまり、変換後の形式) を指定する必要があります。 表 4 に可能形式変換が示されています。 さらに、追加の変更 (取り出した画像に適用する回転や拡大縮小など) を識別する変換オプションを指定することができます。 表 5 に指定できる変換オプションが示されています。
たとえば、C アプリケーション・プログラムの次のステートメントでは、画像をクライアント・ファイルに取り出します。 ソース・イメージは、データベース表に BLOB として保管されます。 取り出された画像は GIF 形式に変換され、元のサイズの 3 倍に拡大されます。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Img_file; EXEC SQL END DECLARE SECTION; strcpy (Img_file.name, "/employee/images/ajones.gif"); Img_file.name_length= strlen(Img_file.name); Img_file.file_options= SQL_FILE_CREATE; EXEC SQL SELECT CONTENT( PICTURE, /* image handle */ 'GIF', /* target format */ '-s 3.0') /* conversion options */ INTO :Img_file, FROM EMPLOYEE WHERE NAME = 'Anita Jones';