イメージ、オーディオ、およびビデオ・エクステンダー 管理およびプログラミングの手引き

ユーザー指定の属性をもつオブジェクトの更新

ユーザー指定の属性で保管された画像、音声、ビデオのオブジェクトを更新する場合には、更新内容の属性を指定する必要があります。 属性値は、属性構造体に割り当ててください。 属性構造体は、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';


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]