DB2 Extender 提供使用者定義函數,可用來儲存、存取及操作資料庫中的影像、音效及視訊資料。您在應用程式中使用 SQL 陳述式來撰寫這些 UDF 的要求,方法與要求 SQL 內建函數相同。 與內建函數一樣,UDF 是在資料庫伺服器中執行。
下列 C 應用程式中的 SQL 陳述式,要求一個稱為 DB2Image 的 Image Extender UDF, 來將影像儲存於資料庫表格中;該來源影像的內容位於一個伺服器檔案中:
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', /*id*/ 'Anita Jones', /*name*/ DB2IMAGE( /*Image Extender UDF*/ CURRENT SERVER, /*database */ '/employee/images/ajones.bmp', /*image content*/ 'ASIS', /*keep the image format*/ :hvStorageType, /*store image in DB as BLOB* 'Anita''s picture') /*comment*/ );
您可使用 Extender 應用程式設計介面來顯示影像及播放音效或視訊物件。 您可以使用 C 語言中的 client 函數呼叫來撰寫這些 API。函數可在 您的資料庫從屬站工作站中執行。
下列 C 陳述式包括一個名為 DBiBrowse 的 API。該 API 擷取影像 handle 的資 料,並啟動瀏覽器來顯示影像:
EXEC SQL BEGIN DECLARE SECTION; char hvImg_hdl [251]; EXEC SQL END DECLARE SECTION EXEC SQL SELECT PICTURE INTO :hvImg_hdl WHERE NAME='Robert Smith'; rc=DBiBrowse( "ib %s", /*image browser*/ MMDB_PLAY_HANDLE, /*use image handle*/ hvImg_hdl, /*image handle*/ MMDB_PLAY_NO_WAIT); /*run browser independently*/
UDF 必須以案例的使用者 ID 來執行: DB2 Extender UDF 必須以 DB2 Extender 案例相同的使用者 ID 來執行。 此外, 若您建立 DB2 Extender 案例,或使用現存的 DB2 Extender 案例,則 UDF 必須以 DB2 相同的使用者 ID 來執行。
DB2 必須適當地架構: DB2 必須適當地架構, 確保 DB2 Extender 能正常作業,尤其是指 DB2 Extender UDF 的正常作業。 APP_CTL_HEAP_SZ 資料庫架構參數,特別要適當地設定。