DB2 Extender 提供了用户定义函数来存储、存取和处理数据库中的图象、音频和视频数据。通过请求 SQL 内部函数的同样方式, 在应用程序中使用 SQL 语句来编码对这些 UDF 的请求。与内部函数类似,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 语言中的客户机函数调用来编码这些 API。这些函数在数据库客户机工作站中运行。
下列 C 语句包括名为 DBiBrowse 的 API。此 API 检索图象句柄的数据并启动浏览器来显示图象。
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 数据库配置参数。