画像、音声、ビデオのオブジェクトをクライアント・バッファーまたはクライアント・ファイルから更新するには、ホスト変数かファイル参照変数を使用します。
更新のソースがクライアント・ファイルにある場合は、ファイル参照変数を使って内容を伝送します。 たとえば、C アプリケーション・プログラムの次のステートメントでは、Audio_file というファイル参照変数を定義し、それを使ってデータベース表に BLOB として保管されている音声クリップを更新します。 この更新のソースはクライアント・ファイルにあります。 ファイル参照変数の file_options フィールドは、SQL_FILE_READ、つまり入力用に設定されています。 また、ファイル参照変数が Content UDF への内容引き数として使用されています。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Audio_file; EXEC SQL END DECLARE SECTION; strcpy (Audio_file.name, "/employee/newsound/ajones.wav"); Audio_file.name_length= strlen(Audio_file.name); Audio_file.file_options= SQL_FILE_READ; EXEC SQL UPDATE EMPLOYEE SET SOUND=CONTENT( SOUND, :Audio_file /*file reference variable*/ 'WAVE', /*keep the image format*/ CAST(NULL as LONG VARCHAR)) WHERE NAME='Anita Jones';
オブジェクトがクライアント・バッファーにある場合は、ホスト変数を使ってその内容を伝送し、更新します。 次の C アプリケーション・プログラムの例では、Video_seg というホスト変数を使ってビデオ・クリップの内容を伝送し、更新します。 そのビデオ・クリップに対応する注釈も更新されます。 ビデオ・クリップは、データベース表に BLOB として保管されます。 ホスト変数が Replace UDF へ内容の引き数として使用されています。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (2M) Video_seg EXEC SQL END DECLARE SECTION; EXEC SQL UPDATE EMPLOYEE SET VIDEO=REPLACE( VIDEO, :Video_seg /*host variable*/ 'MPEG1', CAST(NULL as LONG VARCHAR), 'Anita''s new video') WHERE NAME='Anita Jones';
UDF メモリーは十分とってください: 更新するオブジェクトの内容がクライアント・バッファーにある場合は、データベース・マネージャー構成の UDF_MEM_SZ パラメーターを 4 MB 以上に設定することが必要です。
UDF_MEM_SZ パラメーターは、DB2 コマンドの UPDATE DATABASE MANAGER CONFIGURATION を使用すれば更新できます。