儲存影像、音效或視訊物件的格式不限於 Extender 所能瞭解的格式。您可以指定您自己的格式。 由於 Extender 並不瞭解該格式,因此您必須指定來源物件的屬性。請在某個屬性結構中指定屬性值。屬性結構必須儲存在 UDF 中的 LONG VARCHAR FOR BIT DATA 變數的資料欄位。
伺服器上的 UDF 碼會預期資料為"big endian 格式"。Big endian 格式是大部 份 UNIX 平台使用的格式。 若使用"little endian 格式"儲存某物件,您必須準 備使用者提供的屬性資料,以便伺服器上的 UDF 碼能夠正確處理該物件。 Little endian 格式是通常用於 Intel(R) 和其它微處理器平台的格式。 (即使您沒有使用 little endian 格式儲存物件,仍然建議您準備使用者提供的屬性資料。) 使用 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); DBEXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2IMAGE( CURRENT SERVER, '/employee/images/ajones.bmp', :hvStorageType, 'Anita''s picture', :hvImgattrs, /* user-specified attributes */ CAST(NULL as LONG VARCHAR) );
下列在 C 應用程式中的陳述式會儲存一個將音效片段併入資料庫表格的橫列。 來源音效片段位於伺服器檔案中,具有使用者定義的格式、取樣率 44.1 kHz, 並具有兩個記錄的通道。此音效片段不是 MIDI,所以請將磁軌名稱和樂器指定為空字串。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct ( short len; char data[600]; }hvAudattr; EXEC SQL END DECLARE SECTION; MMDBAudioAttrs *paudiattr; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; paudioattr=(MMDBAudioAttrs *) hvAudattr.data; strcpy(paudioAttr>cFormat,"FormatA"); paudioAttr>ulSamplingRate=44100; paudioAttr>usNumChannels=2; hvAudattrs.len=sizeof(MMDBAudioAttrs); DBaPrepareAttrs(paudioAttr); EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2AUDIO( CURRENT SERVER, '/employee/sounds/ajones.aud', :hvStorageType, 'Anita''s voice', :hvAudattr) /* user-specified attributes */ );