画像、音声、ビデオのオブジェクトの内容をクライアント・バッファーまたはクライアント・ファイルからサーバーに送信するには、ホスト変数またはファイル参照変数を使用します。
オブジェクトがクライアント・ファイルにある場合は、ファイル参照変数を使ってその内容を伝送し、サーバーに保管します。 たとえば、C アプリケーション・プログラムの次のステートメントでは、Audio_file というファイル参照変数を宣言し、それを使って音声クリップ (その内容はクライアント・ファイルにある) を伝送します。 オーディオ・クリップは、サーバー上のデータベース表に保管されます。 ファイル参照変数の file_option フィールドは、入力用の SQL_FILE_READ に設定されています。 また、ファイル参照変数が DB2Audio UDF への内容引き数として使用されています。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Audio_file; EXEC SQL END DECLARE SECTION; strcpy (Audio_file.name, "/employee/sounds/ajones.wav"); Audio_file.name_length= strlen(Audio_file.name); Audio_file.file_options= SQL_FILE_READ; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2AUDIO( CURRENT SERVER, :Audio_file, /* file reference variable */ 'WAVE', CAST(NULL as LONG VARCHAR), 'Anita''s voice') );
オブジェクトがクライアント・バッファーにある場合は、BLOB または BLOB_LOCATOR のいずれかとして定義されているホスト変数を使ってその内容を伝送し、サーバーに保管します。 次の C アプリケーション・プログラム・ステートメントでは、Video_loc というホスト変数を使ってビデオ・クリップの内容を伝送し、サーバーに保管します。 ビデオ・クリップは、データベース表に BLOB として保管されます。 ホスト変数が DB2Video UDF へ内容の引き数として使用されます。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR Video_loc; EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2VIDEO( CURRENT SERVER, :Video_loc, /* host variable */ 'MPEG1', '', 'Anita''s video') );
UDF メモリーは十分とってください: 保管するオブジェクトの内容がクライアント・バッファーにある場合は、データベース・マネージャー構成の UDF_MEM_SZ パラメーターを 4 MB 以上に設定することが必要です。
UDF_MEM_SZ パラメーターは、DB2 コマンドの UPDATE DATABASE MANAGER CONFIGURATION を使用すれば更新できます。
UPDATE DATABASE MANAGER コマンドの詳細については、 DB2 コマンド解説書 を参照してください。