zoukankan      html  css  js  c++  java
  • Oracle Blob转Clob和Varchar2

    create or replace FUNCTION blob_to_clob (blob_in IN BLOB) 
    RETURN CLOB 
    IS 
    v_clob CLOB; 
    v_varchar VARCHAR2(4000); 
    v_start PLS_INTEGER := 1; 
    v_buffer PLS_INTEGER := 4000; 
    g_nls_db_char varchar2(60); 
    BEGIN 
     select userenv('LANGUAGE') into g_nls_db_char from dual; 
     
     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)));
     
     DBMS_LOB.CREATETEMPORARY(v_clob, TRUE); 
     
     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 NETHERLANDS.UTF8'));

     DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar); 

     v_start := v_start + v_buffer; 
     END LOOP; 
     
     --DBMS_OUTPUT.put_line(v_varchar);
     
     RETURN v_clob; 
     
    end blob_to_clob; 

    create or replace FUNCTION blob_to_varchar (blob_in IN BLOB) 
    RETURN VARCHAR2 
    IS 

    v_varchar VARCHAR2(4000); 
    v_start PLS_INTEGER := 1; 
    v_buffer PLS_INTEGER := 4000; 
     
    BEGIN 
     --select userenv('LANGUAGE') into g_nls_db_char from dual; 
     
     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)));
     
     --DBMS_LOB.CREATETEMPORARY(v_clob, TRUE); 
     
     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 NETHERLANDS.UTF8'));

     --DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar); 

     v_start := v_start + v_buffer; 
     END LOOP; 
     
     --DBMS_OUTPUT.put_line(v_varchar);
     
     RETURN v_varchar; 
     
    end blob_to_varchar;

  • 相关阅读:
    32 最小子串覆盖
    31 数组划分
    29 交叉字符串
    动态规划
    18 带重复元素的子集
    17 子集
    16 带重复元素的排列
    23.二叉树的后续遍历序列
    J.U.C-其他组件
    21.Longest Palindromic Substring(最长回文子串)
  • 原文地址:https://www.cnblogs.com/vicky24k/p/4398896.html
Copyright © 2011-2022 走看看