ORA-29280: 在 SQL Developer 中使用目录的目录路径无效
ORA-29280: invalid directory path using directory in SQL Developer
我需要用过程创建一个 CSV 文件,这个文件保存在我的电脑中,但是我的代码有一个错误。你能帮帮我吗?
我的代码是:
create or replace PROCEDURE JSP
as
CURSOR C_donnees IS
select distinct CODPRO, MOTCLE,CODZN6,CODZN8
From PRO WHERE CODZN6 = 'C' AND CODSOC = '1';
w_sysdate varchar2(20);
w_repertoire varchar2(64);
w_fichier varchar2(80);
l_fichier_log utl_file.file_type;
BEGIN
-- INITIALISATION DES VARIABLES ---
-----------------------------------
SELECT To_Char(SysDate, 'YYYYMMDD_HH24MISS') DATEJOUR INTO w_sysdate FROM Dual;
w_repertoire := 'C:\Users\julie\Documents\Singer Safety\Fichie SQL';
w_fichier := 'extraction_'||w_sysdate||'.csv';
-- ouverture du ficher ---
dbms_output.put_line('Début de la boucle');
l_fichier_log := utl_file.fopen( w_repertoire, w_fichier, 'A');
-- PARCOUR LE SELECT ---
-------------------------------------
FOR r_donnees IN c_donnees
LOOP
-- ecriture des lignes du select dans le fichier
utl_file.put_line(l_fichier_log, r_donnees.CODPRO || ';' || r_donnees.MOTCLE || ';' || r_donnees.CODZN6 || ';' || r_donnees.CODZN8 );
END LOOP;
--------- fermeture des fichiers et fin ----------
UTL_FILE.fclose_all;
dbms_output.put_line('FIN du script');
END; -- fin de la procédure
我有这个错误:
ORA-29280: chemin de répertoire non valide
ORA-06512: à "SYS.UTL_FILE", ligne 41
ORA-06512: à "SYS.UTL_FILE", ligne 478
ORA-06512: à "C##JLECAT.JSP", ligne 21
你能帮帮我吗?
您是数据库中的运行 pl/sql。 utl_file 将在数据库服务器上查找该目录,而不是在客户端计算机上。如果您想从 sqldeveloper 导出到您的本地计算机,我建议将您的数据存储在 table 中,然后使用 sqldeveloper 导出功能将其保存为 csv。
UTL_FILE.FOPEN
的 location
参数必须是 Oracle 目录对象名称,而不是路径字符串。这些可以这样创建:
CREATE OR REPLACE DIRECTORY my_dir AS '/usr/bin/my_directory';
那么您可以将 'MY_DIR' 指定为 location
,即
w_repertoire := 'MY_DIR';
此外,数据库服务器必须可以访问该位置,而不是像您的路径那样在您的计算机本地。
我需要用过程创建一个 CSV 文件,这个文件保存在我的电脑中,但是我的代码有一个错误。你能帮帮我吗?
我的代码是:
create or replace PROCEDURE JSP
as
CURSOR C_donnees IS
select distinct CODPRO, MOTCLE,CODZN6,CODZN8
From PRO WHERE CODZN6 = 'C' AND CODSOC = '1';
w_sysdate varchar2(20);
w_repertoire varchar2(64);
w_fichier varchar2(80);
l_fichier_log utl_file.file_type;
BEGIN
-- INITIALISATION DES VARIABLES ---
-----------------------------------
SELECT To_Char(SysDate, 'YYYYMMDD_HH24MISS') DATEJOUR INTO w_sysdate FROM Dual;
w_repertoire := 'C:\Users\julie\Documents\Singer Safety\Fichie SQL';
w_fichier := 'extraction_'||w_sysdate||'.csv';
-- ouverture du ficher ---
dbms_output.put_line('Début de la boucle');
l_fichier_log := utl_file.fopen( w_repertoire, w_fichier, 'A');
-- PARCOUR LE SELECT ---
-------------------------------------
FOR r_donnees IN c_donnees
LOOP
-- ecriture des lignes du select dans le fichier
utl_file.put_line(l_fichier_log, r_donnees.CODPRO || ';' || r_donnees.MOTCLE || ';' || r_donnees.CODZN6 || ';' || r_donnees.CODZN8 );
END LOOP;
--------- fermeture des fichiers et fin ----------
UTL_FILE.fclose_all;
dbms_output.put_line('FIN du script');
END; -- fin de la procédure
我有这个错误:
ORA-29280: chemin de répertoire non valide
ORA-06512: à "SYS.UTL_FILE", ligne 41
ORA-06512: à "SYS.UTL_FILE", ligne 478
ORA-06512: à "C##JLECAT.JSP", ligne 21
你能帮帮我吗?
您是数据库中的运行 pl/sql。 utl_file 将在数据库服务器上查找该目录,而不是在客户端计算机上。如果您想从 sqldeveloper 导出到您的本地计算机,我建议将您的数据存储在 table 中,然后使用 sqldeveloper 导出功能将其保存为 csv。
UTL_FILE.FOPEN
的 location
参数必须是 Oracle 目录对象名称,而不是路径字符串。这些可以这样创建:
CREATE OR REPLACE DIRECTORY my_dir AS '/usr/bin/my_directory';
那么您可以将 'MY_DIR' 指定为 location
,即
w_repertoire := 'MY_DIR';
此外,数据库服务器必须可以访问该位置,而不是像您的路径那样在您的计算机本地。