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

PL / SQLのファイルからBLOBを取得する方法は?

    以下に、PL/SQLのファイルからBLOBを取得する関数の例を示します。

    ファイルからBLOBを取得するためのPL/SQL関数

    次の関数はファイルを読み取り、ファイルのBLOBデータ型を返します。関数GET_BLOBは、次の2つのパラメータを取ります。(1)Oracleディレクトリオブジェクト名(2)ファイル名。

    CREATE OR REPLACE FUNCTION get_blob (i_dir IN VARCHAR2, i_file IN VARCHAR2)
       RETURN BLOB
    AS
       l_bfile   BFILE;
       l_blob    BLOB;
    BEGIN
       DBMS_LOB.createtemporary (l_blob, FALSE);
       l_bfile := BFILENAME (i_dir, i_file);
       DBMS_LOB.fileopen (l_bfile, DBMS_LOB.file_readonly);
       DBMS_LOB.loadfromfile (l_blob, l_bfile, DBMS_LOB.getlength (l_bfile));
       DBMS_LOB.fileclose (l_bfile);
    
       RETURN l_blob;
    EXCEPTION
       WHEN OTHERS
       THEN
          IF DBMS_LOB.fileisopen (l_bfile) = 1
          THEN
             DBMS_LOB.fileclose (l_bfile);
          END IF;
    
          DBMS_LOB.freetemporary (l_blob);
          RAISE;
    END get_blob;

    テスト

    C:\ Picsフォルダにファイルmyimage.jpgがあるとします。次に、フォルダC:\ PicsのMY_PICSなどのOracleディレクトリオブジェクトを作成し、ディレクトリ名MY_PICSとファイル名myimage.jpgを渡して以下の関数を呼び出します。 。 Oracleでディレクトリオブジェクトを作成する方法がわからない場合は、次のリンクを確認してください:CreateOracleDirectoryObject。

    DECLARE
       f_blob   BLOB;
    BEGIN
       f_blob := get_blob ('MY_PICS', 'myimage.jpg');
    END;

    これで、変数f_blobにファイルmyimage.jpgのBLOBが作成されました。

    関連項目:

    • Oracleデータベースにファイルを挿入する方法
    1. MariaDBの日時値から分を減算する方法

    2. oracle-多くの日付形式を単一の形式の日付に変換します

    3. 15便利なMySQL/MariaDBパフォーマンスのチューニングと最適化のヒント

    4. MSSQLServerのクロステーブル制約