使用主变量或文件引用变量来从客户机缓冲区或客户机文件更新图象、 音频或视频对象。
若用于更新的源位于客户机文件中,则使用文件引用变量来传送其内容。例如,C 应用程序中的下列语句定义名为 Audio_file 的文件引用变量, 并使用它来更新以 BLOB 形式存储在数据库表中的音频剪辑。用于更新的源位于客户机文件中。注意,文件引用变量的 file_options 字段被设置为 SQL_FILE_READ, 即用于输入。另外还需注意,该文件引用变量被用作 Content UDF 的内容自变量。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Audio_file; EXEC SQL END DECLARE SECTION; strcpy (Audio_file.name, "/employee/newsound/ajones.wav"); Audio_file.name_length= strlen(Audio_file.name); Audio_file.file_options= SQL_FILE_READ; EXEC SQL UPDATE EMPLOYEE SET SOUND=CONTENT( SOUND, :Audio_file /*file reference variable*/ 'WAVE', /*keep the image format*/ CAST(NULL as LONG VARCHAR)) WHERE NAME='Anita Jones';
若对象位于客户机缓冲区中,则使用主变量来传送其内容以进行更新。在以下的 C 应用程序示例中,使用了名为 Video_seg 的主变量来传送视频剪辑的内容, 以进行更新。还更新了与视频剪辑相关联的注解。该视频剪辑以 BLOB 的形式存储在数据库表中。注意, 主变量被用作 Replace UDF 的内容自变量。
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (2M) Video_seg EXEC SQL END DECLARE SECTION; EXEC SQL UPDATE EMPLOYEE SET VIDEO=REPLACE( VIDEO, :Video_seg /*host variable*/ 'MPEG1', CAST(NULL as LONG VARCHAR), 'Anita''s new video') WHERE NAME='Anita Jones';
确保有足够的 UDF 内存:当更新其内容在客户机缓冲区中的对象时,需要确保将“数据库管理程序配置”中的 UDF_MEM_SZ 参数 设置为 4 MB 或更大。可用 DB2 命令 UPDATE DATABASE MANAGER CONFIGURATION 来更新 UDF_MEM_SZ 参数。