Erro ao criar uma package com procs

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Tentei criar essa pacakge com uma proc dentro e me dá vários erros.

Selecionar tudo

---------------------Header da Package-----------------------------
CREATE OR REPLACE PACKAGE PKG_CARTA_QUITACAO_HEADER
IS
BEGIN
    SP_CARTA_QUITACAO_HEADER(
	    P_NR_REGISTRO           IN CARTA_QUITACAO_HEADER.NR_REGISTRO%TYPE,
		P_NR_SEQUENCIA_REGISTRO IN CARTA_QUITACAO_HEADER.NR_SEQUENCIA_REGISTRO%TYPE,
		P_DT_PROCESSAMENTO      IN CARTA_QUITACAO_HEADER.DT_PROCESSAMENTO%TYPE,
		P_NR_SEQUENCIA_ARQUIVO  IN CARTA_QUITACAO_HEADER.NR_SEQUENCIA_ARQUIVO%TYPE,
		P_CD_PROGRAMA           IN CARTA_QUITACAO_HEADER.CD_PROGRAMA%TYPE,
		P_CD_EMPRESA            IN CARTA_QUITACAO_HEADER.CD_EMPRESA%TYPE,
		P_NR_ANO_QUITACAO       IN CARTA_QUITACAO_HEADER.NR_ANO_QUITACAO%TYPE,
		P_FL_PROCESSADO         IN CARTA_QUITACAO_HEADER.FL_PROCESSADO%TYPE
	);
	
	SP_CARTA_QUITACAO_HEADER_UPDATE(
	    P_FL_PROCESSADO
	);

END PKG_CARTA_QUITACAO_HEADER;
/

-----------------------Body da Package----------------------------

CREATE OR REPLACE PACKAGE BODY PKG_CARTA_QUITACAO_HEADER
IS
BEGIN
	PROCEDURE SP_CARTA_QUITACAO_HEADER(
	    P_NR_REGISTRO           CARTA_QUITACAO_HEADER.NR_REGISTRO%TYPE,
		P_NR_SEQUENCIA_REGISTRO CARTA_QUITACAO_HEADER.NR_SEQUENCIA_REGISTRO%TYPE,
		P_DT_PROCESSAMENTO      CARTA_QUITACAO_HEADER.DT_PROCESSAMENTO%TYPE,
		P_NR_SEQUENCIA_ARQUIVO  CARTA_QUITACAO_HEADER.NR_SEQUENCIA_ARQUIVO%TYPE,
		P_CD_PROGRAMA           CARTA_QUITACAO_HEADER.CD_PROGRAMA%TYPE,
		P_CD_EMPRESA            CARTA_QUITACAO_HEADER.CD_EMPRESA%TYPE,
		P_NR_ANO_QUITACAO       CARTA_QUITACAO_HEADER.NR_ANO_QUITACAO%TYPE,
		P_FL_PROCESSADO         CARTA_QUITACAO_HEADER.FL_PROCESSADO%TYPE
		) 
	AS
	    V_INSERT BOOLEAN;
	BEGIN
	    V_INSERT := TRUE;
	    BEGIN
			INSERT INTO CARTA_QUITACAO_HEADER(
				ID_CARTA_QUITACAO_HEADER,
				NR_REGISTRO,          
				NR_SEQUENCIA_REGISTRO,
				DT_PROCESSAMENTO,     
				NR_SEQUENCIA_ARQUIVO, 
				CD_PROGRAMA,          
				CD_EMPRESA,
				NR_ANO_QUITACAO,
				FL_PROCESSADO         
			VALUES(
				SEQ_CARTA_QUITACAO_HEADER.NEXTVAL,
				P_NR_REGISTRO,             
				P_NR_SEQUENCIA_REGISTROISTRO,
				P_DT_PROCESSAMENTO,    
				P_NR_SEQUENCIA_ARQUIVO UIVO, 
				P_CD_PROGRAMA,                
				P_CD_EMPRESA,          
				P_NR_ANO_QUITACAO,     
				P_FL_PROCESSADO); 
        EXCEPTION
		WHEN OTHERS
			V_INSERT := FALSE;
		END;
		
		IF V_INSERT THEN
			COMMIT;
		ELSE
			ROLLBACK;
		END IF;
		
	END SP_CARTA_QUITACAO_HEADER;
	
	SP_CARTA_QUITACAO_HEADER_UPDATE(P_FL_PROCESSADO)
	AS
	BEGIN
	
	
	
	END SP_CARTA_QUITACAO_HEADER_UPDATE;

END PKG_CARTA_QUITACAO_HEADER;
/
Esses são os erros que pego no OutPut
3/1 PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following: end function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior
5/33 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
6/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
7/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
8/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
9/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
10/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
11/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
12/30 PLS-00103: Encountered the symbol "CARTA_QUITACAO_HEADER" when expecting one of the following: ( The symbol "(" was substituted for "CARTA_QUITACAO_HEADER" to continue.
13/3 PLS-00103: Encountered the symbol ";" when expecting one of the following: ) , and or
20/0 PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable persistable order overriding static member constructor map
Errors: check compiler log
Essa tabela já está criada
CARTA_QUITACAO_HEADER
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Removi o BEGIN depois do create da packege e agora o erro está no parêntesis dos parâmetros da proc
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Tirei os erros e compilo. Mas só compilo uma a um, se eu rodar o script todo, do Package e do Body juntos, no CREATE do body dá erro. Uma pergunta, como eu crio um PKG e o PKG Body no mesmo script?
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Rodei um script identico a esse, mas quando eu rodo esse

Selecionar tudo

CREATE OR REPLACE PACKAGE BODY PKG_CARTA_QUITACAO_HEADER
IS
	PROCEDURE SP_CARTA_QUITACAO_HEADER(
	    P_NR_REGISTRO           CARTA_QUITACAO_HEADER.NR_REGISTRO%TYPE,
		P_NR_SEQUENCIA_REGISTRO CARTA_QUITACAO_HEADER.NR_SEQUENCIA_REGISTRO%TYPE,
		P_DT_PROCESSAMENTO      CARTA_QUITACAO_HEADER.DT_PROCESSAMENTO%TYPE,
		P_NR_SEQUENCIA_ARQUIVO  CARTA_QUITACAO_HEADER.NR_SEQUENCIA_ARQUIVO%TYPE,
		P_CD_PROGRAMA           CARTA_QUITACAO_HEADER.CD_PROGRAMA%TYPE,
		P_CD_EMPRESA            CARTA_QUITACAO_HEADER.CD_EMPRESA%TYPE,
		P_NR_ANO_QUITACAO       CARTA_QUITACAO_HEADER.NR_ANO_QUITACAO%TYPE,
		P_FL_PROCESSADO         CARTA_QUITACAO_HEADER.FL_PROCESSADO%TYPE
		) 
	AS
	    V_INSERT BOOLEAN;
	BEGIN
	    V_INSERT := TRUE;
	    BEGIN
			INSERT INTO CARTA_QUITACAO_HEADER(
				ID_CARTA_QUITACAO_HEADER,
				NR_REGISTRO,          
				NR_SEQUENCIA_REGISTRO,
				DT_PROCESSAMENTO,     
				NR_SEQUENCIA_ARQUIVO, 
				CD_PROGRAMA,          
				CD_EMPRESA,
				NR_ANO_QUITACAO,
				FL_PROCESSADO)         
			VALUES(
				SEQ_CARTA_QUITACAO_HEADER.NEXTVAL,
				P_NR_REGISTRO,             
				P_NR_SEQUENCIA_REGISTRO,
				P_DT_PROCESSAMENTO,    
				P_NR_SEQUENCIA_ARQUIVO, 
				P_CD_PROGRAMA,                
				P_CD_EMPRESA,          
				P_NR_ANO_QUITACAO,     
				P_FL_PROCESSADO); 
        EXCEPTION
		WHEN OTHERS THEN
			V_INSERT := FALSE;
		END;
		
		IF V_INSERT THEN
			COMMIT;
		ELSE
			ROLLBACK;
		END IF;
		
	END SP_CARTA_QUITACAO_HEADER;
	
	PROCEDURE SP_CARTA_QUITACAO_HEADER_UPDATE(P_FL_PROCESSADO VARCHAR2)
	AS
	    V_FL_PROCESSADO VARCHAR2(1);
        V_SEQUENCE_VAL  NUMBER(10);
	BEGIN
	    V_FL_PROCESSADO := 'S';
        SELECT SEQ_CARTA_QUITACAO_HEADER.CURRVAL INTO V_SEQUENCE_VAL FROM DUAL;
	  UPDATE 
	      CARTA_QUITACAO_HEADER SET FL_PROCESSADO = V_FL_PROCESSADO 
	  WHERE
	      ID_CARTA_QUITACAO_HEADER = V_SEQUENCE_VAL;
	
	END SP_CARTA_QUITACAO_HEADER_UPDATE;

END PKG_CARTA_QUITACAO_HEADER;
Pego erro aqui

Selecionar tudo

V_INSERT BOOLEAN;
Mas no script anterior não deu errpo e a var tem o mesmo nome e tipo e declarada na mesma posição.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

pnet1 escreveu: Pego erro aqui

Selecionar tudo

V_INSERT BOOLEAN;
Mas no script anterior não deu errpo e a var tem o mesmo nome e tipo e declarada na mesma posição.
Qual erro que deu ?
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Meu post foi precipitado, um pouco mais e resolvi, mas para quem passar por isso, era erro de sintaxe por falta de atenção. Um boa e completa vefrificação resolve. Peço desculpas a comunidade pela precipitação e falta de investigação.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes