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.截稿。