Fiz isso:
Selecionar tudo
DECLARE
vFILE_HANDLE_R UTL_FILE.FILE_TYPE;
vFILE_HANDLE_W UTL_FILE.FILE_TYPE;
vREG VARCHAR2(800);
vRETORNO VARCHAR2(800);
vDATAPROC DATE;
vDATACONTROLE DATE;
vPATH VARCHAR2(50);
vID_REG_AB1CARTA_HEADER REG_AB1CARTA_HEADER.ID_REG_AB1CARTA_HEADER%TYPE;
vAB1_CODREG_H REG_AB1CARTA_HEADER.AB1_CODREG_H%TYPE;
vAB1_SEQREG_H REG_AB1CARTA_HEADER.AB1_SEQREG_H%TYPE;
vAB1_DTPROC_H REG_AB1CARTA_HEADER.AB1_DTPROC_H%TYPE;
vAB1_SEQARQ_H REG_AB1CARTA_HEADER.AB1_SEQARQ_H%TYPE;
vAB1_CODPROG_H REG_AB1CARTA_HEADER.AB1_CODPROG_H%TYPE;
vAB1_CODEMPRE_H REG_AB1CARTA_HEADER.AB1_CODEMPRE_H%TYPE;
vAB1_ANOQUITA_H REG_AB1CARTA_HEADER.AB1_ANOQUITA_H%TYPE;
vAB1_FILLER_H REG_AB1CARTA_HEADER.AB1_FILLER_H%TYPE;
BEGIN
vDATAPROC := SYSDATE;
vDATACONTROLE := SYSDATE + 0.001;
--****************** INÍCIO ROTINA ****************************
SP_MONITORAMENTO_TI ('I',
VDATACONTROLE,
5,
13,
'');
--******************** FIM ROTINA *****************************
vPATH := 'C:\arquivos';
BEGIN
vFILE_HANDLE_R := UTL_FILE.FOPEN (vPATH,'ARQ_CARTA_QUIT_ANUAL.TXT','R');
vFILE_HANDLE_W := UTL_FILE.FOPEN (vPATH,'ARQ_CARTA_QUIT_ANUAL_' || VDATACONTROLE || '.TXT','W');
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
RAISE_APPLICATION_ERROR(-20001,SQLERRM);
WHEN UTL_FILE.INVALID_OPERATION THEN
SP_MONITORAMENTO_TI('E',VDATACONTROLE,5,13,'Arquivo ARQ_CARTA_QUIT_ANUAL.TXT não Encontrado');
--GOTO FIM;
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20003,SQLERRM);
END;
vID_REG_AB1CARTA_HEADER := NULL;
vAB1_CODREG_H := NULL;
vAB1_SEQREG_H := NULL;
vAB1_DTPROC_H := NULL;
vAB1_SEQARQ_H := NULL;
vAB1_CODPROG_H := NULL;
vAB1_CODEMPRE_H := NULL;
vAB1_ANOQUITA_H := NULL;
vAB1_FILLER_H := NULL;
BEGIN
UTL_FILE.GET_LINE (vFILE_HANDLE_R, vREG);
DBMS_OUTPUT.PUT_LINE(vREG);
END;
END;
e recebo isso, mas o diretório
C:\arquivos existe. Abaixo o erro completo
Selecionar tudo
Error starting at line : 2 in command -
DECLARE
vFILE_HANDLE_R UTL_FILE.FILE_TYPE;
vFILE_HANDLE_W UTL_FILE.FILE_TYPE;
vREG VARCHAR2(800);
vRETORNO VARCHAR2(800);
vDATAPROC DATE;
vDATACONTROLE DATE;
vPATH VARCHAR2(50);
vID_REG_AB1CARTA_HEADER REG_AB1CARTA_HEADER.ID_REG_AB1CARTA_HEADER%TYPE;
vAB1_CODREG_H REG_AB1CARTA_HEADER.AB1_CODREG_H%TYPE;
vAB1_SEQREG_H REG_AB1CARTA_HEADER.AB1_SEQREG_H%TYPE;
vAB1_DTPROC_H REG_AB1CARTA_HEADER.AB1_DTPROC_H%TYPE;
vAB1_SEQARQ_H REG_AB1CARTA_HEADER.AB1_SEQARQ_H%TYPE;
vAB1_CODPROG_H REG_AB1CARTA_HEADER.AB1_CODPROG_H%TYPE;
vAB1_CODEMPRE_H REG_AB1CARTA_HEADER.AB1_CODEMPRE_H%TYPE;
vAB1_ANOQUITA_H REG_AB1CARTA_HEADER.AB1_ANOQUITA_H%TYPE;
vAB1_FILLER_H REG_AB1CARTA_HEADER.AB1_FILLER_H%TYPE;
BEGIN
vDATAPROC := SYSDATE;
vDATACONTROLE := SYSDATE + 0.001;
--****************** INÍCIO ROTINA ****************************
SP_MONITORAMENTO_TI ('I',
VDATACONTROLE,
5,
13,
'');
--******************** FIM ROTINA *****************************
vPATH := 'C:\arquivos';
BEGIN
vFILE_HANDLE_R := UTL_FILE.FOPEN (vPATH,'ARQ_CARTA_QUIT_ANUAL.TXT','R');
vFILE_HANDLE_W := UTL_FILE.FOPEN (vPATH,'ARQ_CARTA_QUIT_ANUAL_' || VDATACONTROLE || '.TXT','W');
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
RAISE_APPLICATION_ERROR(-20001,SQLERRM);
WHEN UTL_FILE.INVALID_OPERATION THEN
SP_MONITORAMENTO_TI('E',VDATACONTROLE,5,13,'Arquivo ARQ_CARTA_QUIT_ANUAL.TXT não Encontrado');
--GOTO FIM;
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20003,SQLERRM);
END;
vID_REG_AB1CARTA_HEADER := NULL;
vAB1_CODREG_H := NULL;
vAB1_SEQREG_H := NULL;
vAB1_DTPROC_H := NULL;
vAB1_SEQARQ_H := NULL;
vAB1_CODPROG_H := NULL;
vAB1_CODEMPRE_H := NULL;
vAB1_ANOQUITA_H := NULL;
vAB1_FILLER_H := NULL;
BEGIN
UTL_FILE.GET_LINE (vFILE_HANDLE_R, vREG);
DBMS_OUTPUT.PUT_LINE(vREG);
END;
END;
Error report -
ORA-20001: ORA-29280: invalid directory object
ORA-06512: at line 41