国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle中的處理CLOB字段的動態PL/SQL

2024-08-29 13:37:35
字體:
來源:轉載
供稿:網友

  動態PL/SQL,對CLOB字段操作可傳遞表名table_name,表的唯一標志字段名field_id,clob字段名field_name,記錄號v_id,開始處理字符的位置v_pos,傳入的字符串變量v_clob
  
  修改CLOB的PL/SQL過程:updateclob
  
  create or replace PRocedure updateclob(
  table_name in varchar2,
  field_id in varchar2,
  field_name in varchar2,
  v_id in number,
  v_pos in number,
  v_clob in varchar2)
  is
  lobloc clob;
  c_clob varchar2(32767);
  amt binary_integer;
  pos binary_integer;
  query_str varchar2(1000);
  begin
  pos:=v_pos*32766+1;
  amt := length(v_clob);
  c_clob:=v_clob;
  query_str :='select 'field_name' from 'table_name' where 'field_id'= :id for update ';
  --initialize buffer with data to be inserted or updated
  EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;
  --from pos position, write 32766 varchar2 into lobloc
  dbms_lob.write(lobloc, amt, pos, c_clob);
  commit;
  exception
  when others then
  rollback;
  end;
  /
  
  用法說明:
  在插入或修改以前,先把其它字段插入或修改,CLOB字段設置為空empty_clob(),然后調用以上的過程插入大于2048到32766個字符。
  假如需要插入大于32767個字符,編一個循環即可解決問題。
  
  查詢CLOB的PL/SQL函數:getclob
  
  create or replace function getclob(
  table_name in varchar2,
  field_id in varchar2,
  field_name in varchar2,
  v_id in number,
  v_pos in number) return varchar2
  is
  lobloc clob;
  buffer varchar2(32767);
  amount number := 2000;
  offset number := 1;
  query_str varchar2(1000);
  begin
  query_str :='select '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+(v_pos-1)*2000;
  --read 2000 varchar2 from the buffer
  dbms_lob.read(lobloc,amount,offset,buffer);
  return buffer;
  exception
  when no_data_found then
  return buffer;
  end;
  /
  
  用法說明:
  用select getclob(table_name,field_id,field_name,v_id,v_pos) as partstr from dual;
  可以從CLOB字段中取2000個字符到partstr中,編一個循環可以把partstr組合成dbms_lob.getlength(field_name)長度的目標字符串。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖市| 拜城县| 通江县| 东平县| 象州县| 武邑县| 内丘县| 桂阳县| 平乐县| 德兴市| 松桃| 尚志市| 巨野县| 浮梁县| 乌恰县| 罗源县| 山阴县| 乡宁县| 陇西县| 广平县| 西丰县| 云南省| 中超| 婺源县| 民权县| 隆回县| 灵山县| 崇明县| 晋州市| 新泰市| 文水县| 当雄县| 镇赉县| 寿光市| 洞口县| 湾仔区| 松滋市| 华阴市| 九江市| 景东| 广宗县|