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

Cách giải quyết vấn đề với Oracle DBMS_LOB

Từ tài liệu bạn đã liên kết tới :

vì vậy GRUPO nên đánh giá thành 'DIR_XML' thay vì 'C:\XMLS' . Điều đó được thể hiện trong ví dụ trong tài liệu đó. (Có một cơ chế trước thư mục-đối tượng dựa trên một đường dẫn được lưu trữ dưới dạng tham số cơ sở dữ liệu, nhưng điều đó kém an toàn hơn ...)

Nếu tất cả những gì bạn có là đường dẫn bạn có thể tra cứu tên thư mục:

select directory_name from all_directories where directory_path = 'C:\XMLS'

lưu ý rằng các đường dẫn thư mục không nhất thiết phải là duy nhất, vì vậy bạn có thể phải đối phó với các bản sao.

Nhưng như @Matthew đã giải thích và như tài liệu cho biết (nhấn mạnh thêm):

Cơ sở dữ liệu chỉ có thể xem các tệp trên hệ thống tệp của chính nó - cục bộ hoặc được chia sẻ - chứ không phải những tệp trên hệ thống tệp khách. Nếu bạn cũng đang chạy DB cục bộ thì không có sự khác biệt (mặc dù quyền đối với thư mục và tệp vẫn quan trọng). Nếu bạn đang truy cập một DB từ xa thì nó không thể nhìn thấy ổ C:client của bạn và nếu bạn đặt tên đối tượng thư mục, bạn sẽ vẫn nhận được một cái gì đó như:

ORA-22288: file or LOB operation FILEOPEN failed
No such file or directory

Bạn phải đặt các tệp XML của mình vào một thư mục trên máy chủ DB mà tài khoản hệ điều hành có quyền truy cập và tạo một đối tượng thư mục trỏ đến vị trí đó trên máy chủ; và sau đó tham chiếu đến tên đối tượng thư mục, không phải đường dẫn hệ thống tệp bên dưới.



  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 cách nào để xóa các bản sao khỏi danh sách được phân tách bằng dấu cách bởi Oracle regexp_replace?

  2. Làm cách nào để biết id trước khi lưu một đối tượng trong jpa

  3. Xếp hạng () SQL hoặc một cái gì đó tương tự

  4. Sao chép bảng từ một Oracle DB sang một DBLink đơn hướng khác

  5. Làm cách nào để đặt LINESIZE và PAGESIZE bằng một biến thay thế?