ORA将BLOB转换成字符串

本文介绍了在Oracle中如何将BLOB类型的数据转换为VARCHAR2。当BLOB字符数小于2000时,可以使用UTL_RAW.CAST_TO_VARCHAR2;超过2000则需要自定义函数Blob_To_Varchar,通过循环读取并转换。示例代码展示了如何使用该函数从OBJVALUE字段中提取特定子串。
摘要由CSDN通过智能技术生成

1  Utl_Raw.Cast_To_Varchar2(blob): blob字符数小于2000

select  Utl_Raw.Cast_To_Varchar2(OBJVALUE),attributeinstance.* from attributeinstance

2. 长度大于2000,再用Utl_Raw.Cast_To_Varchar2报错,ORA-22835:缓冲区对应Clob到char转换或者BLOB到RAW转换而言太小。

自定义函数

Create Or Replace Function Blob_To_Varchar (Blob_In In Blob) Return Varchar2   
AS  
    V_Varchar Varchar2(4000);   
    V_Start Pls_Integer := 1;   
    V_Buffer Pls_Integer := 4000;   
Begin  
    If Dbms_Lob.Getlength(Blob_In) Is Null Then  
        Return '';  
    End If;  
    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),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值