sql >> データベース >  >> RDS >> Oracle

OracleBLOBからbase64CLOBへ

    この関数は、ここから を取得しました 仕事をする必要があります。

    CREATE OR REPLACE FUNCTION base64encode(p_blob IN BLOB)
      RETURN CLOB
    -- -----------------------------------------------------------------------------------
    -- File Name    : http://oracle-base.com/dba/miscellaneous/base64encode.sql
    -- Author       : Tim Hall
    -- Description  : Encodes a BLOB into a Base64 CLOB.
    -- Last Modified: 09/11/2011
    -- -----------------------------------------------------------------------------------
    IS
      l_clob CLOB;
      l_step PLS_INTEGER := 12000; -- make sure you set a multiple of 3 not higher than 24573
    BEGIN
      FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_blob) - 1 )/l_step) LOOP
        l_clob := l_clob || UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_blob, l_step, i * l_step + 1)));
      END LOOP;
      RETURN l_clob;
    END;
    /
    

    その場合、更新は次のようになります

    UPDATE test SET imageBase64 = base64encode(image);
    

    関数は、その連結演算子ではなく、関数DBMS_LOB.APPENDを使用して最適化する必要があることに注意してください。パフォーマンスに問題がある場合は、それを試してください。



    1. PLSQL-トリガーにIinsertを挿入すると、再帰ループが発生します

    2. 特にexpressとpostgresを使用している場合、JavaScriptを使用してselectステートメントに値を挿入するにはどうすればよいですか?

    3. SSDTを使用して、別のデータベースのオブジェクトを参照するビューがある場合、SQL71561エラーを解決するにはどうすればよいですか?

    4. SSRSの特定のテキストを太字にします