Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để lấy BLOB từ tệp trong PL / SQL?

Dưới đây, tôi đưa ra một ví dụ về hàm để lấy BLOB từ một tệp trong PL / SQL.

Hàm PL / SQL để lấy BLOB từ tệp

Hàm sau sẽ đọc một tệp và sẽ trả về kiểu dữ liệu BLOB của tệp. Hàm GET_BLOB nhận hai tham số:(1) Tên đối tượng thư mục Oracle (2) tên tệp.

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;

Kiểm tra

Giả sử bạn có tệp myimage.jpg trong thư mục C:\ Pics, sau đó tạo một đối tượng thư mục Oracle, ví dụ:MY_PICS cho thư mục C:\ Pics và gọi hàm dưới đây bằng cách chuyển tên thư mục MY_PICS và tên tệp myimage.jpg . Nếu bạn không biết cách tạo đối tượng thư mục trong Oracle, hãy xem liên kết này:Tạo đối tượng thư mục Oracle.

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

Bây giờ bạn có BLOB của tệp myimage.jpg trong biến f_blob.

Xem thêm:

  • Làm cách nào để Chèn một tệp vào Cơ sở dữ liệu Oracle?
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm ơn để đánh vần số (đơn vị tiền tệ) sang đơn vị tiền tệ của Ý mà không cần mã cứng số bản dịch

  2. Thực thi ràng buộc khóa ngoại cho các cột của cùng một bảng

  3. Làm cách nào để bỏ qua dấu và trong tập lệnh SQL chạy từ SQL Plus?

  4. (+) =toán tử trong oracle sql trong mệnh đề where

  5. Làm thế nào để nhận giá trị ASCII trong Oracle?