Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

UTL-FILE Scripts -ORA-29280: invalid directory object

selvi mOct 13 2023 — edited Oct 13 2023

HI Team,
When executing this PL/SQL code, an error is encountered: 'ORA-29280: invalid directory object', even though the Unix folder has full permissions. I'm trying to understand why this error occurred. Could you please help me identify any potential mistakes or suggest modifications to the code?….

PROMPT ***
PROMPT *** Data_read.sql
PROMPT ***

SELECT 'Starting Data_read.sql @:'||TO_CHAR(sysdate, 'MM-DD-YYYY HH24:MI:SS')
FROM dual;
WHENEVER OSERROR EXIT FAILURE ROLLBACK

SET FEEDBACK ON
SET SERVEROUTPUT ON
SET TIMING ON
SET TERMOUT ON
SET HEAD OFF
SET VERIFY OFF
SET ESCAPE \
SPOOL OFF

variable rc NUMBER;

WHENEVER SQLERROR CONTINUE

DROP TABLE temp_read;

WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK

CREATE TABLE temp_read
(
STORE NUMBER(10),
DC VARCHAR2(50),
EFFECTIVE_DATE VARCHAR2(50),
EXPIRY_DATE VARCHAR2(50)
);

DECLARE

L_STORE NUMBER(10);
L_DC VARCHAR2(50);
L_EFFECTIVE_DATE VARCHAR2(50);
L_EXPIRY_DATE VARCHAR2(50);

L_INPUT UTL_FILE.FILE_TYPE;
L_LASTLINE VARCHAR2(32000) :=NULL;
L_ERRMSG VARCHAR2(32000);

BULKERRORS EXCEPTION;
pragma EXCEPTION_INIT(BULKERRORS, -24381);
p_ignore_headerlines number;
BEGIN

--:rc:=0;

L_INPUT := UTL_FILE.FOPEN('/u/apps/data/data-avl','read.csv','r');

p_ignore_headerlines:=1;
IF p_ignore_headerlines > 0
THEN
BEGIN
FOR i IN 1 .. p_ignore_headerlines
LOOP
UTL_FILE.get_line (L_INPUT, L_LASTLINE);

    END LOOP;  
       END;  

END IF;
LOOP
BEGIN
UTL_FILE.GET_LINE( L_INPUT, L_LASTLINE );

  SELECT REGEXP\_SUBSTR(L\_LASTLINE,'\[^,\]+',1,1) AS V1,   
         REGEXP\_SUBSTR(L\_LASTLINE,'\[^,\]+',1,2) AS V2,  
         REGEXP\_SUBSTR(L\_LASTLINE,'\[^,\]+',1,3) AS V3,  
         REGEXP\_SUBSTR(L\_LASTLINE,'\[^,\]+',1,4) AS V4  
     INTO         
             
           L\_STORE,                
           L\_DC,  
           L\_EFFECTIVE\_DATE,    
           L\_EXPIRY\_DATE,         
                     
FROM DUAL;  

INSERT INTO temp_read
(
STORE,DC,EFFECTIVE_DATE,EXPIRY_DATE
)
VALUES
(
L_STORE,L_DC,L_EFFECTIVE_DATE,L_EXPIRY_DATE
);

EXCEPTION
WHEN NO_DATA_FOUND THEN
:rc:=0;
EXIT;
END;
END LOOP;

COMMIT;

UTL_FILE.FCLOSE(L_INPUT);
dbms_output.put_line('Table temp_read Created');

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
:rc:=-1;
L_ERRMSG := SQLERRM;
DBMS_OUTPUT.PUT_LINE('Error occurred in PLSQL block while loading temp table');
DBMS_OUTPUT.PUT_LINE(L_ERRMSG);
DBMS_OUTPUT.PUT_LINE(L_LASTLINE);
RAISE_APPLICATION_ERROR(-20001,'Error occurred in PLSQL block');
END;
/

Error Details:
Error occurred in PLSQL block
ORA-29280: invalid directory object
DECLARE
*
ERROR at line 1:
ORA-20001: Error occurred in PLSQL block
details
ORA-06512: at line 93

Comments

Post Details

Added on Oct 13 2023
2 comments
1,215 views