可以 BLOB 形式将图象、音频或视频对象存储在数据库中, 或存储在服务器文件中。若将对象存储在服务器文件中,则数据库指向该文件。
若从客户机缓冲区或客户机文件存储对象,则指示 BLOB 或服务器文件存储器作为在 target_file 参数中指定的内容的结果。若指定文件名,它指示要将对象存储在服务器文件中。若指定空值或空字符串, 则它指示要将对象以 BLOB 形式存储在数据库表中。target_file 参数的数据类型是 LONG VARCHAR。若指定空值, 切记将其强制转换为 LONG VARCHAR 数据类型。
例如,C 应用程序中的下列语句将包括图象的行存储到数据库表中。图象源在客户机缓冲区中。图象存储在服务器文件中。数据库表指向服务器文件:
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR Img_buf EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2IMAGE( CURRENT SERVER, :Img_buf, 'ASIS', '/Employee/images/ajones.bmp', /* store image in server file */ 'Anita''s picture') );
若存储位于服务器文件中的对象,则指定常量 MMDB_STORAGE_TYPE_INTERNAL
,以便将该对象以 BLOB 的形式存储到数据库表中。若要存储对象,且要使其内容保留在服务器文件中, 则指定常量 MMDB_STORAGE_TYPE_EXTERNAL。MMDB_STORAGE_TYPE_INTERNAL 的值为整数 1。MMDB_STORAGE_TYPE_EXTERNAL 的值为整数 0。
例如,在以下 C 应用程序中,将音频剪辑存储在服务器文件中。源音频内容已经在服务器文件中。存储操作将文件名放在数据库中, 从而可通过 SQL 语句来存取该文件。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2AUDIO( CURRENT SERVER, '/Employee/Sounds/ajones.wav', 'WAVE', :hvStorageType, /* store audio in server file */ 'Anita''s voice') );