Я хочу прочитать файл на моем локальном компьютере, содержащий параметры запроса, когда я выполняю запрос в Oracle SQL Developer. Примеры, которые я нашел в сети, неадекватны. Я продолжаю получать ошибки "ORA-29283: недопустимая операция с файлом", когда выполняю приведенный ниже код:
CREATE DIRECTORY SAMPLEDATA2 AS 'C:';
GRANT READ, WRITE ON DIRECTORY SAMPLEDATA2 TO PUBLIC;
declare
f utl_file.file_type;
s varchar2(200);
c number := 0;
BEGIN
f := utl_file.fopen('SAMPLEDATA2','sample2.txt','R');
loop
utl_file.get_line(f,s);
dbms_output.put_line(s);
c := c + 1;
end loop;
exception
when NO_DATA_FOUND then
utl_file.fclose(f);
dbms_output.put_line('Number of lines: ' || c);
end;
Ответ 1 · рейтинг 4 · Justin Cave
UTL_FILE может читать данные только из файлов, которые хранятся на сервере базы данных. Поскольку это код PL / SQL, он работает на сервере базы данных и имеет доступ только к тем ресурсам, которые доступны процессу Oracle на сервере базы данных.
Ответ 2 · APC
"Я хочу прочитать файл на моем локальном компьютере, содержащий параметры запроса, когда я выполняю запрос в Oracle SQL Developer".
Это кажется необычным - я хотел сказать "своеобразным" архитектурным решением. Откуда берутся эти ценности? Почему их нужно хранить в файле? Как часто они меняются?
Будет очень сложно предоставить содержимое локального файла ПК удаленному серверу базы данных (т.е. мы говорим об автоматизации с помощью ftp или ручного процесса, включающего что-то вроде WinSCP).
С другой стороны, применить к запросу некоторые параметры запроса может быть довольно просто; например, используя SYS_CONTEXT и пространства имен. Но мне нужно узнать больше подробностей, прежде чем я смогу предложить альтернативное решение.