Как я могу прочитать локальный файл в SQL Developer?
Я хочу прочитать файл на моем локальном компьютере, который содержит параметры запроса, когда я выполняю запрос в 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;
2 ответа
UTL_FILE
может только читать данные из файлов, которые хранятся на сервере базы данных. Поскольку это код PL/SQL, он выполняется на сервере базы данных и имеет доступ только к тем ресурсам, которые доступны процессу Oracle на сервере базы данных.
"Я хочу прочитать файл на своем локальном компьютере, который содержит параметры запроса, когда я выполняю запрос в Oracle SQL Developer".
Это кажется необычным - я собирался сказать "своеобразное" архитектурное решение. Откуда эти значения? Почему они должны храниться в файле? Как часто они меняются?
Будет очень трудно выставить содержимое локального файла ПК на удаленный сервер базы данных (то есть мы говорим об автоматизации с помощью ftp
или ручной процесс, включающий что-то вроде WinSCP).
С другой стороны, может быть довольно просто применить некоторые параметры запроса к запросу; например, используя SYS_CONTEXT и пространства имен. Но мне нужно знать больше деталей, прежде чем я смогу предложить альтернативное решение.