填充包含 IfxDocDesc 数据类型的表

使用 IfxDocDesc 数据类型将文档以智能大对象形式存储到表中,或通过文件名引用操作系统上的文档。

假设搜索文本存储于 UNIX® 文件系统上的下列 Microsoft® Word 文件集合中:
/local0/excal/desc1.doc
/local0/excal/desc2.doc
进一步假设您希望将这些文件装入到名为 videos1 的表中,如以下示例所述:
CREATE TABLE videos1
(
    id           INTEGER,
    name         VARCHAR(30),
    description  IfxDocDesc
);
要将这些文件的第一个文件 /local0/excal/desc1.doc 装入到 videos1 表的某一行,请执行下列语句:
INSERT INTO videos1 (id, name, description)
    VALUES ( 1010, 'The Unforgiven',
    Row ('MS Word', '7.0',
         Row ('IFX_FILE', NULL::LLD_Lob, 
              '/local0/excal/desc1.doc')::LLD_Locator, 
    NULL::LVARCHAR )::IfxDocDesc
);

因为指定 IFX_FILE 作为协议,所以 description 列实际上并没有包含搜索文本,而是有一个指向操作系统文件的指针(数据类型为 LLD_Locator),该操作系统文件由 INSERT 语句指定。

如果希望在数据库本身中存储第二个文本文件 /local0/excal/desc2.doc ,请使用 IFX_BLOB 或 IFX_CLOB 协议,如以下类似示例所示:
INSERT INTO videos1 (id, name, description)
    VALUES ( 1011, 'The Sting',
    Row ('MS Word', '7.0',
         Row ('IFX_CLOB', 
         FileToCLOB ('/local0/excal/desc2.doc', 'client'),
         NULL::LVARCHAR )::LLD_Locator, 
    NULL::LVARCHAR )::IfxDocDesc
);

FileToCLOB() 例程将该文件从操作系统读取到数据库中。