ORA-29280: 在 SQL Developer 中使用目录的目录路径无效

Posted

技术标签:

【中文标题】ORA-29280: 在 SQL Developer 中使用目录的目录路径无效【英文标题】:ORA-29280: invalid directory path using directory in SQL Developer 【发布时间】:2021-03-18 10:29:32 【问题描述】:

我需要使用程序创建一个 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 

你能帮帮我吗?

【问题讨论】:

在数据库服务器中运行的代码无法直接访问您的客户端计算机。 【参考方案1】:

UTL_FILE.FOPENlocation 参数必须是 Oracle 目录对象名称,而不是路径字符串。这些可以这样创建:

CREATE OR REPLACE DIRECTORY my_dir AS '/usr/bin/my_directory';

然后您将“MY_DIR”指定为location,即

w_repertoire := 'MY_DIR';

此外,该位置必须可供数据库服务器访问,而不是您的机器本地,因为您的路径似乎是。

【讨论】:

【参考方案2】:

您正在数据库中运行 pl/sql。 utl_file 将在数据库服务器上查找该目录,而不是在客户端计算机上。如果你想从 sqldeveloper 导出到本地机器,我建议将你的数据存储在一个表中,然后使用 sqldeveloper 导出功能将其保存为 csv。

【讨论】:

以上是关于ORA-29280: 在 SQL Developer 中使用目录的目录路径无效的主要内容,如果未能解决你的问题,请参考以下文章

为啥plsql develope 打开.sql文件时会生成后缀名为.~sql文件

pl_sql develope连接远程数据库的方法

Oracle SQL Developer 连接 MySQL

PLSQL Develope连接oracle数据库配置

SQL Server 中的视图

SQL Developer新建连接