oracle clob 存储过程初始化与操作

oracle clob 存储过程操作:遇到超过varchar(4000)长度的时候,就需要使用clob来存储字符。

有两种操作方式:

1、append clob填充到clob

2、write 字符串填充到clob

方法为:

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);

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);

其中,各个参数的含义如下:
dest_lob是被源lob添加到的目标lob的定位器
src_lob是源lob的定位器
any_cs用来指定字符集。

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


apend操作简单,过程中定义两个clob,dbms_lob.append(dest_clob, src_clob);
write稍微麻烦:

1、

参数定义:v_dest_clob clob; v_tmp_char varchar2(4000);

2、

dbms_lob.write(v_dest_clob, length(v_tmp_char),dbms_lob.getlength(v_dest_clob) + 1,  v_tmp_char);


写到此处,很多人实践的时候,回报一个错误。原因是:目的clob没有被初始化。在begin第一行中初始化v_dest_clob。

代码为:dbms_lob.createtemporary(v_dest_clob,true);


OK.截稿。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值