ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle Blob 转换为Clob

Oracle Blob 转换为Clob

原创 Linux操作系统 作者:尛样儿 时间:2010-06-10 18:43:26 0 删除 编辑

SQL> create table test (id number,name blob);
 
Table created
 
SQL> create table test2 (id number,name clob);
 
Table created
 
SQL> insert into test values (111,rawtohex('hello'));
 
1 row inserted
 
SQL> commit;
 
Commit complete

//查询blob数据

SQL> declare
  2  bb blob;
  3  amt number;
  4  pos number;
  5  cot number;
  6  buf raw(40);
  7  begin
  8  select name into bb from test where id=111;
  9  dbms_lob.open(bb, dbms_lob.lob_readonly);
 10  amt := 40; pos := 1; buf := '';
 11  cot :=1 + dbms_lob.getlength(bb);
 12  while pos
 13  dbms_lob.read(bb,amt,pos,buf);
 14  dbms_output.put_line(utl_raw.cast_to_varchar2(buf));
 15  pos :=pos+amt;
 16  end loop;
 17  dbms_lob.close(bb);
 18  end;
 19  /
 
hello
 
PL/SQL procedure successfully completed
 
//blob转换为clob

SQL> DECLARE
  2  l_sour_blob BLOB;
  3  l_dest_clob CLOB;
  4  l_lang NUMBER := DBMS_LOB.default_lang_ctx; //一定绑定为变量,不然报PLS-00363错误
  5  l_warning NUMBER;
  6  l_t_offset NUMBER := 1;
  7  l_src_offset NUMBER := 1;
  8  BEGIN
  9  SELECT name
 10  INTO l_sour_blob
 11  FROM test
 12  where id=111;
 14  DBMS_LOB.CREATETEMPORARY(l_dest_clob,TRUE,2);  
 //初始化clob,不加报错:ORA-06502: PL/SQL: numeric or value error
 15  -- convert to CLOB for display
 16  DBMS_LOB.converttoclob (l_dest_clob,
 17  l_sour_blob,
 18  DBMS_LOB.lobmaxsize,
 19  l_t_offset,
 20  l_src_offset,
 21  DBMS_LOB.default_csid,
 22  l_lang,
 23  l_warning
 24  );
 25  insert into test2 values(111,l_dest_clob);
 26  commit;
 27  END;
 28  /
 
PL/SQL procedure successfully completed
 
//查询clob数据
SQL> select * from test2;
 
        ID NAME
---------- --------------------------------------------------------------------------------
       111 hello
 
SQL>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23135684/viewspace-664934/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle 登录触发器
请登录后发表评论 登录
全部评论
Oracle数据库管理员,Oracle数据库系统构架员;2012年7月出版《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》一书;Oracle 10g OCM。

注册时间:2010-01-05

  • 博文量
    483
  • 访问量
    5650101