Как использовать UTL_file для хранения файла на клиенте

#oracle11g

#oracle11g

Вопрос:

Я хочу использовать plsql, установленный на клиенте Windows, для повторного просмотра некоторого PDF-файла, сохраненного в виде большого двоичного объекта на сервере. Я нашел руководство по UTL_FILE, но похоже, что он может создавать файл только на стороне сервера, так возможно ли создать файл на клиенте или есть способ перенести файлы с сервера на клиент? Кто-нибудь может дать мне какое-нибудь предложение? Спасибо.

Ответ №1:

UTL_File имеет параметр с именем «МЕСТОПОЛОЖЕНИЕ». Именно сюда будут записаны ваши файлы, и это называется КАТАЛОГОМ. Вы должны иметь возможность создать свой собственный КАТАЛОГ и указать в нем местоположение, доступное вашему экземпляру Oracle.

 CREATE OR REPLACE DIRECTORY PDF_Out AS 'C:UsersMePDF_Out';
  

Затем замените то, что вы в настоящее время используете в качестве значения для «LOCATION», на имя вашего нового КАТАЛОГА; в примере это называется PDF_Out.

Возможно, вам потребуется проверить запущенные службы, чтобы узнать, какой пользователь запускает прослушиватель Oracle, и предоставить этому пользователю соответствующие права на чтение / запись в местоположение, определенное вашим новым КАТАЛОГОМ.

Комментарии:

1. Итак, я должен изменить сервер, чтобы иметь доступ и авторизацию для записи на моем клиенте, верно?

2. Нет, либо клиент должен получить разрешение на извлечение файлов из каталога сервера, где UTL_FILE их записал, либо вы должны создать процесс на стороне сервера, который отправляет файл, как только он создан, вашему клиенту. Теоретически должна быть возможность сопоставить некоторый сетевой диск, чтобы он просматривался как сервером, так и клиентом как общий диск, но как это сделать, вам следует спросить у специалиста по сети.

3. Похоже, вам нужен администратор базы данных для создания каталога для вас и сетевой пользователь для управления привилегиями с обеих сторон. В моем примере использовался C: и это было бы проблематично, поскольку на сервере, скорее всего, этот диск тоже будет отображен; лучше найти сетевое местоположение или любое другое местоположение, которое может быть выражено в формате UNC.