Ir para conteúdo

POWERED BY:

Arquivado

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

MrEd

procedure

Recommended Posts

Galera seguinte, tem 1 mes q eu "aprendi" pl/sql atraves de uma apostila para fazer uns esquema aqui no trabalho... Eu fiz essa procedure e nao esta funcionando dando o seguinte erro:

 

ORA-01400: cannot insert NULL into ("SIGA_DESENVOLVIMENTO"."RATEIO"."RATEIO_COD") ORA-06512: at "SIGA_DESENVOLVIMENTO.RATEIO_PESSOAL_GERAL", line 48 ORA-06512: at line 1

 

Eu acho que as variaveis do select into estao vazias... Eu uso um cursor para fazer um loop no registro e a cada loop q ele fizer eu executo uns select intos para marmazenar uns dados específicos para pode ser usado em outros selects.

 

o código é o seguinte:

 

 

create or replace PROCEDURE RATEIO_PESSOAL_GERAL(vlrRateioTotal OUT VARCHAR2) AS	vlrTotalRateio NUMBER; -- Variável para armazenar o valor total do Rateio de um CC	vlrSalarioBruto PES_SAL.SALARIO_BRUTO%TYPE;	rateioTotal NUMBER := 0; 		/* Variáveis para armazenar os dados das pessoas para fazer a duplicação */		pesCod PES_CC.PES_CC_PES%TYPE;		diasAlocados PES_CC.DIAS_ALOCADOS%TYPE;	/* Fim da variáveis de duplicação */		codCCOM RATEIO_PES_VW.CC_OM_COD%TYPE;	vlrRateionoCC NUMBER := 0;		CURSOR rsRateio IS			SELECT			  CC_OM_COD,			  SUM((SALARIO_BRUTO / 30) * DIAS_ALOCADOS) AS TOTAL_CC			FROM			  RATEIO_PES_VW			GROUP BY CC_OM_COD;BEGIN	OPEN rsRateio;		LOOP				FETCH rsRateio INTO codCCOM, vlrRateionoCC;						/* Duplica os dados onde a data da inclusao é null */							SELECT PES_CC_PES,DIAS_ALOCADOS INTO pesCod, diasAlocados FROM PES_CC WHERE PES_CC_CC_OM = codCCOM AND DATA_VINC IS NULL;				SELECT SALARIO_BRUTO INTO vlrSalarioBruto FROM PES_SAL WHERE PES_SAL_PES = pesCod AND DATA_INC IS NULL;								--Duplicando os dados na tabela PES_CC				INSERT INTO PES_CC(PES_CC_CC_OM,PES_CC_PES,DIAS_ALOCADOS,DATA_VINC,TMS_ULT_ALTERACAO) 					   VALUES(codCCOM,pesCod,diasAlocados,sysdate,systimestamp);					   				--Duplicando os dados na tabela PES_SAL				INSERT INTO PES_SAL(DATA_INC,SALARIO_BRUTO,PES_SAL_PES,TMS_ULT_ALTERACAO) 					   VALUES(sysdate,vlrSalarioBruto,pesCod,systimestamp);							/* Fim da duplicação dos dados */						/* Inseri os dados do rateio na tabela de rateio */							INSERT INTO RATEIO(RATEIO_CC_OM,VALOR,DATA_INC,RATEIO_TIPO_RATEIO,TMS_ULT_ALTERACAO) VALUES(codCCOM,vlrRateionoCC,sysdate,1,systimestamp);						/* Fim do insert */						rateioTotal := rateioTotal + vlrRateionoCC; -- Armazenará o valor total de todos os rateios				EXIT WHEN rsRateio%NOTFOUND;			END LOOP;		CLOSE rsRateio;		vlrTotalRateio := rateioTotal;END RATEIO_PESSOAL_GERAL;
Alguem me de uma luz ai de onde esta o erro....

 

Valeu

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.