procedure
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
Discussão (1)
Carregando comentários...