sql >> Databasteknik >  >> RDS >> Oracle

Hur får man BLOB från fil i PL/SQL?

Nedan ger jag ett funktionsexempel för att hämta BLOB från en fil i PL/SQL.

PL/SQL-funktion för att hämta BLOB från en fil

Följande funktion läser en fil och returnerar filens BLOB-datatyp. Funktionen GET_BLOB tar två parametrar:(1) Oracle-katalogobjektets namn (2) filnamn.

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;

Testa

Anta att du har en fil myimage.jpg i mappen C:\Pics, skapa sedan ett Oracle-katalogobjekt, till exempel MY_PICS för mappen C:\Pics och anropa funktionen nedan genom att skicka katalognamnet MY_PICS och filnamnet myimage.jpg . Om du inte vet hur man skapar ett katalogobjekt i Oracle, kolla denna länk:Skapa Oracle Directory Object.

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

Nu har du BLOB för filen myimage.jpg i variabeln f_blob.

Se även:

  • Hur infogar man en fil i Oracle Database?
  1. Konvertera minuter till HH24:MI-format

  2. Hur kan jag extrahera filer från ett Oracle BLOB-fält?

  3. Hur man replikerar PostgreSQL-data till fjärrwebbplatser

  4. SQLite IN