当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
2015年Oracle认证考试辅导:处理CLOB字段的动态PLSQL
发布时间:2010/3/13 11:24:19 来源:城市学习网 编辑:MOON
  动态PL/SQL,对CLOB字段操作可传递表名table_name,表的唯一标志字段名field_id,clob字段名field_name,记录号v_id,开始处理字符的位置v_pos,传入的字符串变量v_clob
  修改CLOB的PL/SQL过程:0updateclob
  create or replace procedure 0updateclob
  is
  loblocclob.
  c_clobvarchar2.
  amt binary_integer.
  pos binary_integer.
  query_strvarchar2.
  begin
  pos:=v_pos*32766 1.
  amt := length.
  c_clob:=v_clob.
  query_str :=’0select ’field_name’ from ’table_name’ where ’field_id’= :id for 0update ’.
  initialize buffer with data to be inserted or 0updated
  EXECUTE IMMEDIATE query_str INTO lobloc USING v_id.
  from pos position, write 32766 varchar2 into lobloc
  dbms_lob.write.
  commit.
  exception
  when others then
  rollback.
  end.
  /
  用法说明:
  在插入或修改以前,先把其它字段插入或修改,CLOB字段设置为空empty_clob,
  然后调用以上的过程插入大于2048到32766个字符。
  如果需要插入大于32767个字符,编一个循环即可解决问题。
  查询CLOB的PL/SQL函数:getclob
  create or replace function getclob return varchar2
  is
  loblocclob.
  buffervarchar2.
  amountnumber := 2000.
  offsetnumber := 1.
  query_strvarchar2.
  begin
  query_str :=’0select ’field_name’ from ’table_name’ where ’field_id’= :id ’.
  initialize buffer with data to be found
  EXECUTE IMMEDIATE query_str INTO lobloc USING v_id.
  offset:=offset *2000.
  read 2000 varchar2 from the buffer
  dbms_lob.read.
  return buffer.
  exception
  when no_data_found then
  return buffer.
  end.
  /
  用法说明:
  用0select getclob as partstr from dual.
  可以从CLOB字段中取2000个字符到partstr中,
  编一个循环可以把partstr组合成dbms_lob.getlength长度的目标字符串。
  调用PL/SQL过程的方法:
  SQL*PLUSSQL> EXEC 过程名.
  Procedure Builder PL/SQL>过程名.
  JAVACALL .
  PHPBEGINEND.
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved