Ở đây tôi đang đưa ra một ví dụ để lưu dữ liệu BLOB dưới dạng tệp trong PL / SQL. Dữ liệu BLOB bạn có thể lấy từ bảng có cột BLOB hoặc bạn có thể lấy từ tệp trên đĩa.
Ví dụ về hàm PL / SQL để lưu BLOB dưới dạng tệp
Quy trình dưới đây có ba đối số sau:
- Tên đối tượng thư mục Oracle (như i_dir).
- Lưu dưới dạng tên tệp (dưới dạng i_file).
- Dữ liệu BLOB (dưới dạng i_blob).
CREATE OR REPLACE PROCEDURE blob_to_file (i_dir IN VARCHAR2, i_file IN VARCHAR2, i_blob IN BLOB) AS l_file UTL_FILE.file_type; l_buffer RAW (32767); l_amount BINARY_INTEGER := 32767; l_pos INTEGER := 1; l_blob_len INTEGER; BEGIN l_blob_len := DBMS_LOB.getlength (i_blob); l_file := UTL_FILE.fopen (i_dir, i_file, 'WB', 32767); WHILE l_pos < l_blob_len LOOP DBMS_LOB.read (i_blob, l_amount, l_pos, l_buffer); UTL_FILE.put_raw (l_file, l_buffer, TRUE); l_pos := l_pos + l_amount; END LOOP; UTL_FILE.fclose (l_file); EXCEPTION WHEN OTHERS THEN IF UTL_FILE.is_open (l_file) THEN UTL_FILE.fclose (l_file); END IF; RAISE; END blob_to_file;
Kiểm tra
Khối PL / SQL sau sẽ gọi quy trình trên bằng cách chuyển đối tượng thư mục Oracle, tên tệp và dữ liệu BLOB. Đối với dữ liệu BLOB, tôi đang sử dụng hàm GET_BLOB mà tôi đã đưa ra một ví dụ trong bài đăng blog trước của mình:Lấy BLOB từ một tệp trong PL / SQL. Trong trường hợp dưới đây, nó sẽ lấy dữ liệu BLOB từ tệp myfile.jpg từ vị trí MY_DIR và sẽ lưu vào tệp abc.jpg ở vị trí IMG_DIR.
DECLARE f_blob BLOB; BEGIN /* check the above mentioned link for get_blob function example */ f_blob := get_blob ('MY_DIR', 'myfile.jpg'); /* now pass the blob to blob_to_file procedure to save it as a file */ blob_to_file ('IMG_DIR', 'abc.jpg', f_blob); END;
Bây giờ bạn có thể kiểm tra vị trí của thư mục IMG_DIR cho tệp được tạo thông qua BLOB.
Xem thêm:
- Cách tạo một đối tượng thư mục Oracle?
- Tìm hiểu cách trích xuất dữ liệu BLOB từ Bảng Oracle bằng Toad
-
Lỗi đăng nhập Sqlplus khi sử dụng các biến bash:SP2-0306:Tùy chọn không hợp lệ
-
Đọc và nhập tệp CSV trong Oracle PL / SQL một cách hiệu quả
-
ORA-01031:không đủ đặc quyền khi chọn chế độ xem
-
Cách xem câu lệnh Oracle SQL thực đang được thực thi
-
Cách in nhiều báo cáo có mã vạch \ hoặc nhiều mã vạch trong một báo cáo