ユーザー指定の属性で保管された画像、音声、ビデオのオブジェクトを更新する場合には、更新内容の属性を指定する必要があります。 属性値は、属性構造体に割り当ててください。 属性構造体は、UDF の LONG VARCHAR FOR BIT DATA 変数のデータ・フィールドに保管しなければなりません。
サーバー上の UDF コードは常に、"ビッグ・エンディアン形式" のデータを期待します。 ビッグ・エンディアン形式とは、ほとんどの UNIX プラットフォームで使用される形式です。 オブジェクトを "リトル・エンディアン形式" で保管する場合、サーバー上の UDF コードが正しく処理できるように、ユーザー指定の属性データを作成する必要があります。 リトル・エンディアン形式は、Intel および他のマイクロプロセッサー・プラットフォームで一般に使用されている形式です。 (オブジェクトをリトル・エンディアン形式で保管していないとしても、ユーザー指定の属性を作成するのは良いことです。) 画像オブジェクトの属性を作成するには DBiPrepareAttrs API を使用します。 音声オブジェクトの属性を作成するには DBaPrepareAttrs API を使用します。 ビデオ・オブジェクトの属性を作成するには DBvPrepareAttrs API を使用してください。
たとえば、C アプリケーション・プログラムの次のステートメントでは、更新される画像の内容はサーバー・ファイルにあります。 その画像は、高さが 640 ピクセル、幅が 480 ピクセルのユーザー定義形式です。 属性は画像の更新前に作成されることに注意してください。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct { short len; char data[400]; }hvImgattrs; EXEC SQL END DECLARE SECTION; DB2IMAGEATTRS *pimgattr; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; pimgattr = (DB2IMAGEATTRS *) hvImgattrs.data; strcpy(pimgattr>Format,"FormatI"); pimgattr>width=640; pimgattr>height=480; hvImgattrs.len=sizeof(DB2IMAGEATTRS); DBiPrepareAttrs(pimgattr); EXEC SQL UPDATE EMPLOYEE SET PICTURE=REPLACE( PICTURE, '/employee/newimg/ajones.bmp', :hvStorageType, 'Anita''s new picture', :ImgAttrs, /*user-supplied attributes*/ CAST(NULL as LONG VARCHAR)) WHERE NAME='Anita Jones';