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?
-
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
-
Thực thi ràng buộc khóa ngoại cho các cột của cùng một bảng
-
Làm cách nào để bỏ qua dấu và trong tập lệnh SQL chạy từ SQL Plus?
-
(+) =toán tử trong oracle sql trong mệnh đề where
-
Làm thế nào để nhận giá trị ASCII trong Oracle?