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

OracleでBLOBオブジェクトを操作する

    UTL_ENCODE.BASE64_ENCODE 以降 関数はRAWで機能し、PL/SQLで最大32767バイトのBLOBで機能します。 またはSQLでは4000バイト。

    画像が大きい場合は、独自の関数を作成する必要があります。次に例を示します。

    CREATE OR REPLACE FUNCTION base64_encode_blob (p BLOB) RETURN BLOB IS
       l_raw    RAW(24573);
       l_base64 RAW(32767);
       l_result BLOB;
       l_offset NUMBER := 1;
       l_amount NUMBER := 24573;
    BEGIN
       DBMS_LOB.createtemporary(l_result, FALSE);
       DBMS_LOB.open(l_result, DBMS_LOB.lob_readwrite);
       LOOP
          DBMS_LOB.read(p, l_amount, l_offset, l_raw);
          l_offset := l_offset + l_amount;
          l_base64 := utl_encode.base64_encode(l_raw);
          DBMS_LOB.writeappend(l_result, utl_raw.length(l_base64), l_base64);
       END LOOP;
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
          RETURN l_result;
    END;
    /
    


    1. Javaクラスからテーブルタイプとしてパラメータなしでプロシージャを呼び出す方法

    2. ウィンドウを変換する方法-1251(ロシアのキリル文字)MySqlデータベースをUTF-8に変換する

    3. Delphi(rad studio)のデータベース構造を表示する

    4. GWT用のJavaデータベースの抽象化(または:Hibernateは良い選択ですか?)