MrEd 0 Denunciar post Postado Agosto 28, 2007 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
MrEd 0 Denunciar post Postado Agosto 28, 2007 Ai galera, ja consegui resolver. Valeu ! Compartilhar este post Link para o post Compartilhar em outros sites