可使用 Content UDF 来将图象、音频或视频对象检索至服务器文件, 且不进行格式转换。另外,还可使用 Content UDF 来将图象检索至服务器文件,并进行格式转换。
当将图象、音频或视频对象检索至服务器上的文件,且不进行转换时, 指定对象的句柄、目标文件名和覆盖指示符。覆盖指示符 告诉 Extender 在目标文件已存在于服务器上时,是否用检索到的数据覆盖目标文件。若目标文件不存在,则 Extender 在服务器上创建目标文件。
若指定的覆盖指示符值为 1,Extender 将用检索到的数据覆盖目标文件。若指定的覆盖指示符值为 0,Extender 不覆盖目标文件,因而也就不检索数据。
若要检索的对象以 BLOB 形式存储在数据库表中,则覆盖指示符被忽略。无论为覆盖指示符指定了什么内容,都将创建或覆盖目标文件。
当您将对象检索至服务器文件时,它将返回服务器文件的名称。例如,C 应用程序中的以下语句将视频检索至服务器上的文件。服务器文件的文件名存储在主变量 hvVid_fname 中。
EXEC SQL BEGIN DECLARE SECTION; struct{ short len; char data[250]; }hvVid_fname[; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT CONTENT( VIDEO, /* video handle */ '/Employee/Videos/ajones.mpg', /* server file */ 1) /* overwrite target file */ INTO :hvVid_fname; FROM EMPLOYEE WHERE NAME = 'Anita Jones';
如果将对象以 BLOB 的形式存储在数据库表中, 则使用 Content UDF 来将对象检索至服务器文件且不进行转换是合适的。若对象存储在服务器文件中,则将源文件的内容复制至目标文件可能更有效率。
当将图象检索至服务器文件,并进行格式转换时, 指定图象句柄、目标文件名、覆盖目标指示符和目标格式。表 4标识了允许的格式转换。还可选择对目标格式指定空值或空白字符串,或指定字符串 ASIS。在这种情况下, 检索到的图象的格式将与源的格式相同。
例如,C 应用程序中的下列语句将图象检索至服务器上的文件。源图象使用位图格式,并以 BLOB 形式存储在数据库表中。 将把检索到的图象转换为 GIF 格式。服务器文件的文件名存储在主变量 hvImg_fname 中。
EXEC SQL BEGIN DECLARE SECTION; struct{ short len; char [400]; }hvImg_fname[; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT CONTENT( PICTURE, /* image handle */ '/Employee/images/ajones.gif', /* target file */ 1, /* overwrite target file */ 'GIF') /* target format */ INTO :hvImg_fname FROM EMPLOYEE WHERE NAME = 'Anita Jones';
服务器文件必须是可存取的:当将对象检索至服务器文件时, 必须指定目标文件的全限定名称。此外,必须确保将 DB2IMAGEEXPORT、 DB2AUDIOEXPORT 和 DB2VIDEOEXPORT 环境变量设置为能正确解析不完整的文件名规范。