oracle数据长度超过4000,有没有办法,突破VARCHAR2最大长度是4000的限制

dbms_lob包学习笔记之二:append和write存储过程

发表人:www.wwf.co | 发表时间: 2005年四月27日, 14:30

两个写数据的存储过程

dbms_lob.append 和 dbms_lob.write

append存储过程用于将一个大对象添加到另一个大对象中,此时是将源大对象的内容全部添加过去。append存储过程的语法如下:

dbms_lob.append(

dest_lob in out nocopy blob,

src_lob in  blob);

dbms_lob.append(

dest_lob in out nocopy clob character set any_cs,

src_lob in clob character set dest_lob%charset);

其中,各个参数的含义如下:

dest_lob是被源lob添加到的目标lob的定位器

src_lob是源lob的定位器

any_cs用来指定字符集。

write存储过程

write存储过程能够将数据写入大型对象中。写的位置是从大型对象开始处的某个绝对偏移地址,数据从缓冲区参数被写入。写操作将覆盖已经在大型对象偏移地址处存在的任何长度为指定的数据。如果输入数多于在缓冲区的数据,将产生一个错误。如果输入数量小于在缓冲区的数据,那么只有缓冲区的数据字节活字符被写给大型对象。

write存储过程的语法如下:

dbms_lob.write(

lob_loc in out nocopy blob,

amount in binary_integer,

offset in integer,

buffer in raw);

dbms_lob.write(

lob_loc in out nocopy clob character set any_cs,

amount in binary_integer,

offset in integer,

buffer in varchar2 character set lob_loc%charset);

其中各个参数的含义如下:

lob_loc是要操作的大型对象定位器。

amount是要写道大型对象中去的字节数量。

offset是指定将数据写入到大型对象什么位置的偏移地址。

buffer是写入到大型对象的数据缓冲区。

any_cs指定要使用的字符集。

示例:

declare

source_lob clob;

dest_lob clob;

write_amount integer:=18;

writing_position integer;

buffer varchar2(20) := 'Added text to clob';

begin

select clob_locator into dest_lob from mylobs where lob_index = 4 for update;

select clob_locator into source_lob from mylobs where lob_index = 1;

dbms_lob.append(dest_lob, source_lob);

commit;

select clob_locator into dest_lob from mylobs where lob_index = 5 for update;

writing_position := dbms_lob.getlength(dest_lob) + 1;

dbms_lob.write(dest_lob, write_amount, writing_position, buffer);

commit;

end;

/

SQL> select * from mylobs;

LOB_INDEX---CLOB_LOCATOR-------------------------------------------------------

1      I Love Oracle 9i

2      Oracle 9i is powerful

3      Oracle 9i is the most popular database in the world

4      I Love Oracle 9iI Love Oracle 9i

5      Oracle 9i is powerfulAdded text to clob

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值