データベース表に BLOB として保管されている画像、音声、またはビデオのオブジェクトや、サーバー・ファイルにある (そしてデータベースからポイント指定されている) オブジェクトが更新可能です。
オブジェクトをクライアント・バッファーまたはクライアント・ファイルから保管する場合には、filename パラメーターでの指定内容によって、BLOB かサーバー・ファイル記憶域のどちらかを表します。 ファイル名を指定すると、更新されるオブジェクトの内容はサーバー・ファイルにあるものとみなされます。 ファイル名にヌル値を指定すると、更新されるオブジェクトは、データベース表に BLOB として保管されているものとみなされます。
たとえば、C アプリケーション・プログラムの次のステートメントでは、更新される画像の内容はサーバー・ファイルにあります。 更新ソースはクライアント・バッファーにあります。 画像の注釈も同時に更新されます。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (2M) Img_buf EXEC SQL END DECLARE SECTION; EXEC SQL UPDATE EMPLOYEE SET PICTURE=REPLACE( PICTURE, :Img_buf, 'ASIS', '/employee/newimg/ajones.bmp', /*update image in*/ /*server file*/ 'Anita''s new picture') WHERE NAME='Anita Jones';
サーバー・ファイルにあるオブジェクトを更新する場合には、MMDB_STORAGE_TYPE_INTERNAL を指定して、データベース表に BLOB として保管されているオブジェクトを更新します。
内容がサーバー・ファイルにあるオブジェクトを更新するには、MMDB_STORAGE_TYPE_EXTERNAL と指定します。
たとえば、次の C アプリケーション・プログラムでは、音声クリップが更新されます。 音声クリップの内容はサーバー・ファイルにあります。 この更新のソースもサーバー・ファイルにあります。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; EXEC SQL UPDATE EMPLOYEE SET SOUND=CONTENT( SOUND, '/employee/newimg/ajones.wav', 'WAVE', :hvStorageType) /*update audio in server file*/ WHERE NAME='Anita Jones';