CREATE OR REPLACE PROCEDURE REG_AB1CARTA_HEADER_INSERT
AS
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);
vINSERT BOOLEAN;
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
vPATH := 'C:\arquivos';
vDATAPROC := SYSDATE;
vDATACONTROLE := SYSDATE + 0.001;
--****************** INÍCIO ROTINA ****************************
SP_MONITORAMENTO_TI ('I',
VDATACONTROLE,
5,
13,
'');
--******************** FIM ROTINA *****************************
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');
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20003,SQLERRM);
END;
LOOP
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;
UTL_FILE.GET_LINE (vFILE_HANDLE_R, vREG);
vAB1_CODREG_H := SUBSTR(vREG, 1, 1);
IF vAB1_CODREG_H = 0 THEN
BEGIN
vINSERT := TRUE;
vAB1_SEQREG_H := SUBSTR(vREG,2,7);
vAB1_DTPROC_H := SUBSTR(vREG, 10, 10);
vAB1_SEQARQ_H := SUBSTR(vREG, 21, 7);
vAB1_CODPROG_H := SUBSTR(vREG, 29, 6);
vAB1_CODEMPRE_H := SUBSTR(vREG, 36, 60);
vAB1_ANOQUITA_H := SUBSTR(vREG, 97, 4);
vAB1_FILLER_H := SUBSTR(vREG, 102, 305);
BEGIN
INSERT INTO REG_AB1CARTA_HEADER(
ID_REG_AB1CARTA_HEADER,
AB1_CODREG_H,
AB1_SEQREG_H,
AB1_DTPROC_H,
AB1_SEQARQ_H,
AB1_CODPROG_H,
AB1_CODEMPRE_H,
AB1_ANOQUITA_H,
AB1_FILLER_H)
VALUES(
REG_AB1CARTA_HEADER_SEQ.NEXTVAL,
vAB1_CODREG_H,
vAB1_SEQREG_H,
vAB1_DTPROC_H,
vAB1_SEQARQ_H,
vAB1_CODPROG_H,
vAB1_CODEMPRE_H,
vAB1_ANOQUITA_H,
vAB1_FILLER_H);
END;
END;
END LOOP;
END;
/
Não está fechando com end final, dando erro
Corrigi e parece que não tem problemas no fechamaento, mas no END final, fica um "~" vermelho, como se houvesse erro. E tem mais, esse PROC vai ler apenas a primeira linha, o HEADER, mas eu coloquei dentro de um loop. Como eu saio do loop, caso a condição seja satisfeita. Abaixo a PROC:
Foi mal pessoal, é que teva faltando o END IF; Falta de atenção minha, me desculpem a comunidade.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante