Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabio.nascimento

Alguns erros q nao consigo identificar

Recommended Posts

Pessoal,

 

Boa tarde, primeiramente gostaria de salientar q sou novato em banco de dados, estou aprendendo bastante e pra variar me apaixonando.

 

Não possuo experiencia suficiente para decifrar as mensagens de erros emitidas pelo oracle, dessa forma solicito a ajuda dos companheitos.

 

Obs: Acredito que meu erro se resuma a Begins e Ends da vida, mas ainda apanho no que diz respeito a inicio e fim de bloco de execução.

 

Segue abaixo minha procedure + erro relatado.

 

CREATE OR REPLACE PROCEDURE SP_REL_TAREFA4( P_DATA IN DATE )ASCURSOR ENTRADA_RECLAMACAO ( P_DATA IN DATE ) IS  -- Fila de reclamacao  SELECT IDENTIFICACAO, DESCRICAO, COD_DESCRICAO, QUANTIDADE  FROM  (  SELECT '1' IDENTIFICACAO, 		 RTRIM(TTR.VARDSCTIPORECLAMACAO) DESCRICAO,		 TTR.NUMIDTIPORECLAMACAO,		 COUNT  (TP.NUMIDPROCESSO) QUANTIDADE  FROM   TBPROCESSOS TP, 		 TBPROCESSOSRECLAMACAO TPR,		 TBTIPORECLAMACAO TTR  WHERE  TP.NUMIDPROCESSO = TPR.NUMIDPROCESSO  AND	TPR.NUMIDTIPORECLAMACAO = TTR.NUMIDTIPORECLAMACAO  AND	TP.FLGTIPOPROCESSO = 'R'  AND	TP.DATABERTURA >= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 1))),'DD/MM/YYYY')||' 00:00:00','DD/MM/YYYY HH24:MI:SS')  AND	TP.DATABERTURA <= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 2))),'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS')  GROUP BY TTR.VARDSCTIPORECLAMACAO  );  E ENTRADA_RECLAMACAO%ROWTYPE;  P_PROCESSOS_DESCRICAO		  VARCHAR2(200);  P_PROCESSOS_DESCRICAO_COD   NUMBER;  P_PROCESSOS_TOT			 NUMBER;  P_IDENTIFICACAO			 VARCHAR2(1);    --P_PROCESSOS_PRODUTO		 VARCHAR2(200);  --P_PROCESSOS_PRODUTOQTD	  NUMBER;    FILE_PATH		 VARCHAR2(100) := '/spa/relatorios';  FILE_HANDLE 	   UTL_FILE.FILE_TYPE;  W_LINHA		   VARCHAR2(300);  W_TRACO0		  VARCHAR2(170) := LPAD ( ' ', 170, ' ' );  W_TRACO1		  VARCHAR2(170) := LPAD ( ' ', 170, '-' );  W_TRACO2		  VARCHAR2(170) := LPAD ( ' ', 170, '=' );	   W_CONTACARACTER   NUMBER;    BEGIN  W_CONTACARACTER			 :=0;    FILE_HANDLE := UTL_FILE.FOPEN ( FILE_PATH, 'REL_TAREFA4.TXT', 'w' );  W_LINHA := 'Relatorio consolidado por fila de reclamacao '||LPAD ( ' ', 80, ' ' )||		   to_char(sysdate,'DD/MM/YYYY HH24:MI:SS');    UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );  UTL_FILE.PUT_LINE ( FILE_HANDLE, W_TRACO2 );  UTL_FILE.PUT_LINE(FILE_HANDLE, '');    W_LINHA := 'Fila de reclamacao '||LPAD ( ' ', 80, ' ' )|| 'Produto' ||LPAD ( ' ', 25, ' ' )||'Core'||LPAD ( ' ', 10, ' ' )||'Total por reclamacao';	  UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );  UTL_FILE.PUT_LINE ( FILE_HANDLE, W_TRACO1 );  --UTL_FILE.PUT_LINE(FILE_HANDLE, '');  P_PROCESSOS_TOT			 :=0;  	  FOR E IN ENTRADA_RECLAMACAO (P_DATA)	  LOOP	  	  P_PROCESSOS_DESCRICAO	 := E.DESCRICAO;	  P_PROCESSOS_TOT		   := E.QUANTIDADE;	  P_IDENTIFICACAO		   := E.IDENTIFICACAO;	  P_PROCESSOS_DESCRICAO_COD := E.COD_DESCRICAO;	  	  W_CONTACARACTER := 155 - LENGTH(P_PROCESSOS_DESCRICAO);	  	  W_LINHA  := P_PROCESSOS_DESCRICAO ||LPAD ( ' ', W_CONTACARACTER, ' ' )||P_PROCESSOS_TOT;	  UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );	  		  --Colocar aqui uma nova busca filtrando produto por reclamacao		  --inicia Cursor para os produtos por reclamacao		 		  CURSOR RECLAMACAO_PRODUTO ( P_PROCESSOS_DESCRICAO_COD IN NUMBER ) IS		  		  -- Fila de reclamacao		  SELECT IDENTIFICACAO, DESCRICAO, QUANTIDADE		  FROM		  (		  SELECT '2' IDENTIFICACAO, 				  RTRIM(TPR.VARDSCPRODUTO) DESCRICAO, 				  COUNT(TP.NUMIDPRODUTO) QUANTIDADE		  FROM	TBPROCESSOS TP,					  TBPRODUTOS TPR,				  TBPROCESSOSRECLAMACAO TPROCR,				  TBTIPORECLAMACAO TTR		  WHERE   TP.NUMIDPRODUTO = TPR.NUMIDPRODUTO		  AND	 TP.NUMIDPROCESSO = TPROCR.NUMIDPROCESSO		  AND	 TPROCR.NUMIDTIPORECLAMACAO = TTR.NUMIDTIPORECLAMACAO		  AND	 TTR.NUMIDTIPORECLAMACAO = P_PROCESSOS_DESCRICAO_COD		  AND	 TP.DATABERTURA >= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 1))),'DD/MM/YYYY')||' 00:00:00','DD/MM/YYYY HH24:MI:SS')		  AND	 TP.DATABERTURA <= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 2))),'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS')		  GROUP BY TPR.VARDSCPRODUTO		  );		  		  R RECLAMACAO_PRODUTO%ROWTYPE;		  		  		  W_CONTACARACTER			 :=0;		  		  --P_PROCESSOS_TOT			 :=0;		  			  FOR R IN RECLAMACAO_PRODUTO (P_PROCESSOS_DESCRICAO_COD)			  LOOP			  			  P_PROCESSOS_DESCRICAO	 := R.DESCRICAO;			  P_PROCESSOS_TOT		   := R.QUANTIDADE;			  P_IDENTIFICACAO		   := R.IDENTIFICACAO;			  			  --Impressao			  W_CONTACARACTER := 155 - LENGTH(P_PROCESSOS_DESCRICAO);			  			  W_LINHA  := P_PROCESSOS_DESCRICAO ||LPAD ( ' ', W_CONTACARACTER, ' ' )||P_PROCESSOS_TOT;			  UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );						   			  			  P_PROCESSOS_TOT		 := 0;			  END LOOP;  		  	  P_PROCESSOS_TOT		 := 0;	  END LOOP;   UTL_FILE.FCLOSE ( FILE_HANDLE );END SP_REL_TAREFA4;

Erro emitido pelo oracle.

 

 

Type PROCEDURE Owner SPATST Name SP_REL_TAREFA4 Line Error text 81 PLS-00103: Encountered the symbol "RECLAMACAO_PRODUTO" when expecting one of the following:   := . ( @ %;The symbol ":=" was substituted for "RECLAMACAO_PRODUTO" to continue. 81 PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:   . ( * % & = - +; < / > in mod not rem an exponent (**)   <> or != or ~= >= <= <> and or like between is null is not || 106 PLS-00103: Encountered the symbol "=" when expecting one of the following:   constant exception <an identifier>   <a double-quoted delimited-identifier> table LONG_ doubleThe symbol "<an identifier>" was substituted for "=" to continue. 108 PLS-00103: Encountered the symbol "=" when expecting one of the following:   constant exception <an identifier>   <a double-quoted delimited-identifier> table LONG_ double

 

Desde já agradeço qq dica, as vezes dar o peixe não é o foco deste fórum dessa forma quero realmente aprender ou seja quero pescar.

 

Valeu pelas dicas.[

 

 

Fabio Nascimento

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Amigo!

 

você esta declarando um Cursor dentro de um laco de repeticao (FOR), acho que isso nao e possivel nao...

Tenta trocar esse Cursor por um FOR e fazer um SELECT jogando os valores para dentro das variaveis com a clausula INTO.

 

Ex.:

 

declare

teste number;

begin

 

for quantidadeClientes in (select * from cliente) loop

 

begin

select count(*) into teste from venda where idcliente = quantidadeClientes.idcliente;

exception

when no_data_found then

teste := 0;

end;

 

end loop;

 

end;

/

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.