Oracle 存储过程中BLOB转成Varchar

本文介绍了一种在Oracle数据库中将BLOB类型数据转换为VARCHAR2类型的方法,通过自定义函数实现数据的逐段读取和转换,适用于处理大型二进制数据,如图片或文档,最终可以将转换后的数据进一步解析为JSON格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存过中BLOB转成Varchar函数如下:

--blob 转 varchar 
  FUNCTION blob_to_varchar(blob_in IN BLOB) RETURN VARCHAR2 IS
    v_varchar VARCHAR2(2000);
    v_start   PLS_INTEGER := 1;
    v_buffer  PLS_INTEGER := 2000;
  
  BEGIN
    if DBMS_LOB.GETLENGTH(blob_in) is null then
      return empty_clob();
    end if;
    DBMS_OUTPUT.put_line('TEST:' || CEIL(DBMS_LOB.GETLENGTH(blob_in)));
    FOR i IN 1 .. CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOP
      v_varchar := UTL_RAW.CAST_TO_VARCHAR2(utl_raw.convert(DBMS_LOB.SUBSTR(blob_in,
                                                                            v_buffer,
                                                                            v_start),
                                                            'AMERICAN_THE NETHERLANDS.UTF8',
                                                            'AMERICAN_THE NETHERLANDS.UTF8'));
      v_start   := v_start + v_buffer;
    END LOOP;
    RETURN v_varchar;
  end blob_to_varchar;

测试函数如下:

--测试
  procedure testblob(out_retVal out varchar2) is
    tmpblob blob;
    tmpjson json;
  begin
    select t.order_list_json
      into tmpblob
      from testTable t ;
    out_retVal := blob_to_varchar(tmpblob);--转varchar
    tmpjson    := json(blob_to_varchar(tmpblob));--varchar转成json
  end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值