lld_copy_subset 例程

以下示例显示如何使用前一节中定义的 lld_copy_subset 用户定义的例程。

图: lld_copy_subset 例程

-- Using the lld_copy_subset function

create function lld_copy_subset (lld_locator, lld_locator, int8, int)
        returns lld_locator
        external name '/tmp/sapidemo.so'
        language c;

insert into lobs
        values (5, lld_copy_subset (
                "row('ifx_file',null,'/tmp/quote3.txt')"::lld_locator,
        "row('ifx_clob',null,null)"::lld_locator, 20, 70));

select lo from lobs where key = 5;
select lo.lo_pointer::clob from lobs where key = 5;

lld_copy_subset 函数从 quote3.txt 文件中偏移量为 20 的位置开始复制 70 个字节,并将其附加到 CLOB 对象。INSERT 语句会将此数据插入 lobs 表中。

第一个 SELECT 语句返回识别新复制的 CLOB 数据的 lld_locator。第二个 SELECT 语句返回该数据本身。