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