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

Nhập tệp trong Oracle Apex bằng wwv_flow_files

Giả sử bạn muốn nhập nội dung tệp csv với thủ tục cơ sở dữ liệu tùy chỉnh trong Oracle Apex bằng cách sử dụng mục trang duyệt tệp. Làm theo các bước sau:Tạo mục trang duyệt tệp trong Apex và chọn tùy chọn wwv_flow_files để lưu trữ tệp. Sau đó, tạo quy trình trang và chọn sau khi gửi và thực hiện tùy chọn xác thực và tùy chọn mã plsql cho quy trình. Trong khu vực plsql, hãy viết mã sau để xuất tệp csv từ cơ sở dữ liệu (chế độ xem wwv_flow_files) sang ổ đĩa máy chủ và sau đó gọi thủ tục tùy chỉnh của bạn để nhập nội dung của tệp đó vào bảng.DECLARE
v_upl_blob BLOB;
vstart Number:=1;
bytelen Number:=32000;
len Number;
my_vr Raw (32000);
x Number;
l_output Utl_file.file_type;
erout varchar2 (1000);
BEGIN
CHỌN blob_content
VÀO v_upl_blob
TỪ wwv_flow_files
WHERE name =:P25_FB;
-:p25_fb là mục duyệt tệp trong trang
LEN:=Dbms_lob.getlength (V_UPL_BLOB);
l_output:=Utl_File.fopen ('MY_FILES',:P25_FB, 'wb', 32760);
vstart:=1;
bytelen:=32000;
IF len <32760
Then
Utl_File.put_raw (l_output, V_UPL_BLOB);
Utl_File.fflush (l_output);
Khác - viết thành từng đoạn
vstart:=1;

WHILE vstart 0
LOOP
Dbms_lob.Read (V_UPL_BLOB, bytelen, vstart, my_vr);
Utl_File.put_raw (l_output, my_vr);
Utl_File.fflush (l_output);
- đặt vị trí bắt đầu cho lần cắt tiếp theo
vstart:=vstart + bytelen;
- đặt vị trí kết thúc nếu nhỏ hơn 32000 byte
x:=x - bytelen;

IF x <32000
Thì
bytelen:=x;
KẾT THÚC IF;
KẾT THÚC LOOP;
KẾT THÚC IF;

Utl_File.fclose (l_output);

XÓA TỪ wwv_flow_files
WHERE name =:P25_FB;
COMMIT;
--- gọi thủ tục cơ sở dữ liệu tùy chỉnh của bạn để nhập ...
yourcustomprocedure (:P25_FB);
NGOẠI LỆ Khi Người khác
Sau đó
IF Utl_File.is_Open (l_output) Sau đó
Utl_File.fclose (L_OUTPUT);
END IF;
raise;
END;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có giới hạn lồng cho các truy vấn con tương quan trong một số phiên bản của Oracle không?

  2. Hàm NEXT_DAY () trong Oracle

  3. Làm thế nào để ghi lại một cơ sở dữ liệu

  4. SQL, trên dòng thác xóa và trên dòng thác cập nhật

  5. Hibernate ánh xạ một kiểu dữ liệu boolean thành gì khi sử dụng cơ sở dữ liệu Oracle theo mặc định?