[firebase-br] Porquê o update não funciona?
Forum ASR & Associados
forum em asreassociados.com.br
Ter Jan 10 03:44:38 -03 2006
Caro Maciel,
Não encontrei nenhum problema no teu código, vou apenas sugerir alguns
pontos que vc deve verificar e/ou melhorar:
- não tem necessidade de colocar aquele suspend no final do teu código,
pq vc não retorna nenhum valor (RETURNS) na procedure
- verifique se não existe nenhuma trigger sendo rodada ?
- quando vc executa o comando vc esta dando o commit ?
- vc esta executando uma outra procedure (faz_faturamento), para obter
alguns valores, dentre eles o poMoedaConv, ele não esta retornando um
valor NULL ?
- acho que vc esta utilizando variáveis em excesso, por exemplo:
csValLiquido e poValLiquido, vc poderia pegar o valor direto do select
da procedure
- muitas vezes uma tratamento errado com campos que retornam NULL pode
causar coisas desse tipo, faça verificações antes das atribuições ou
utilize o COALESCE para verificar o conteúdo do campo
Espero ter ajudado,
Airton Salviano Ramos de Souza
Analista de Sistemas
www.asreassociados.com.br
Maciel Soncini Bueno wrote:
>Pessoal,
>
>Essta Stored Procedure abaixo não roda o update.
>
>A condição existe dentro da tabela.
>
>Mesmo que eu coloque um UPDATE simples tipo:
>
> UPDATE ML51
> SET MOEDACONV = 1;
>
>nada acontece na tabela.
>
>Se eu pego este UPDATE e jogo numa stored procedure só para ele, funciona
>todavia se roda este stored procedure dentro desta com EXECUTE PROCEDURE...
>também o UPDATE não é executado ou o resultado que deveria gerar não é
>gerado.
>
>Alguém sabe o porquê disto, o que eu deveria fazer antes, comando, etc...
>
>Obrigado
>
>Maciel
>
>
>CREATE PROCEDURE PROCESSA_FATURAMENTO (
> "piDataI" DATE,
> "piDataF" DATE,
> "piCodConv" CHAR(4),
> "piCodCol" CHAR(3),
> "piCodMedS" VARCHAR(6),
> "piCodGrp" CHAR(2))
>AS
>DECLARE VARIABLE "vCodConv" CHAR(4);
>DECLARE VARIABLE "vCodPlano" VARCHAR(6);
>DECLARE VARIABLE "vCodExa" VARCHAR(10);
>DECLARE VARIABLE "vQtde" INTEGER;
>DECLARE VARIABLE "vData_Fat" DATE;
>DECLARE VARIABLE "vUrgente" CHAR(1);
>DECLARE VARIABLE "vCodReq" INTEGER;
>DECLARE VARIABLE "vUrgPac" CHAR(1);
>DECLARE VARIABLE "vMatMed" CHAR(1);
>DECLARE VARIABLE "vCodCol" CHAR(3);
>DECLARE VARIABLE "vCodMedS" INTEGER;
>DECLARE VARIABLE "vCodGrp" CHAR(2);
>DECLARE VARIABLE "poMoedaConv" CHAR(3);
>DECLARE VARIABLE "poCodAMB" VARCHAR(11);
>DECLARE VARIABLE "poTaxaUrg" NUMERIC(10,4);
>DECLARE VARIABLE "poValBruto" DOUBLE PRECISION;
>DECLARE VARIABLE "poValLiquido" DOUBLE PRECISION;
>DECLARE VARIABLE "poValPac" DOUBLE PRECISION;
>DECLARE VARIABLE "poValPacTot" DOUBLE PRECISION;
>DECLARE VARIABLE "poValConv" DOUBLE PRECISION;
>DECLARE VARIABLE "poValConvTot" DOUBLE PRECISION;
>DECLARE VARIABLE "poValCh" NUMERIC(10,4);
>DECLARE VARIABLE "poQtdCh" NUMERIC(10,4);
>DECLARE VARIABLE "poMetraFilme" NUMERIC(10,4);
>DECLARE VARIABLE "poValFilme" DOUBLE PRECISION;
>DECLARE VARIABLE "poValMatMed" DOUBLE PRECISION;
>DECLARE VARIABLE "poValMatMedConv" DOUBLE PRECISION;
>DECLARE VARIABLE "poValMatMedPac" DOUBLE PRECISION;
>DECLARE VARIABLE "poCobraFranq" CHAR(1);
>DECLARE VARIABLE "poValFranq" DOUBLE PRECISION;
>DECLARE VARIABLE "poConvPart" CHAR(3);
>DECLARE VARIABLE "poValChFilme" NUMERIC(10,4);
>DECLARE VARIABLE "poAcrescimo" DOUBLE PRECISION;
>DECLARE VARIABLE "poAcrPlano" DOUBLE PRECISION;
>DECLARE VARIABLE "poFatorSetor" DOUBLE PRECISION;
>DECLARE VARIABLE "poAvista" DOUBLE PRECISION;
>DECLARE VARIABLE "poDescExa" VARCHAR(27);
>DECLARE VARIABLE "csValBruto" NUMERIC(18,2);
>DECLARE VARIABLE "csValLiquido" NUMERIC(18,2);
>DECLARE VARIABLE "csValPac" NUMERIC(18,2);
>DECLARE VARIABLE "csValPacTot" NUMERIC(18,2);
>DECLARE VARIABLE "csValConv" NUMERIC(18,2);
>DECLARE VARIABLE "csValConvTot" NUMERIC(18,2);
>DECLARE VARIABLE "csValFilme" NUMERIC(18,2);
>DECLARE VARIABLE "csValMatMed" NUMERIC(18,2);
>DECLARE VARIABLE "csValMatMedConv" NUMERIC(18,2);
>DECLARE VARIABLE "csValMatMedPac" NUMERIC(18,2);
>DECLARE VARIABLE "csValFranq" NUMERIC(18,2);
>DECLARE VARIABLE "csAcrescimo" NUMERIC(18,2);
>DECLARE VARIABLE "csAcrPlano" NUMERIC(18,2);
>DECLARE VARIABLE "csFatorSetor" NUMERIC(18,2);
>DECLARE VARIABLE "csAvista" NUMERIC(18,2);
>begin
> for select ML51.CODCONV, ML51.CODPLANO, ML51.CODEXA, ML51.QTDE,
> ML51.DATA_FAT, ML51.URGENTE, ML5.CODREQ, ML5.URGPAC,
>ML5.MATMED,
> ML5.CODCOL, ML51.CODMEDS, ML1.CODGRP
> from ML5
> inner join ML51 on (ML5.CODREQ = ML51.CODREQ)
> inner join ML1 on (ML51.CODEXA = ML1.CODEXA)
> inner join ML12 on (ML1.CODGRP = ML12.CODGRP)
> inner join ML3 on (ML51.CODMEDS = ML3.CODMEDS)
> inner join ML16 on (ML51.CODDST = ML16.CODDST)
> inner join ML2 on (ML51.CODCONV = ML2.CODCONV)
> inner join ML6 on (ML5.CODCOL = ML6.CODCOL)
> where ML51.DATA_FAT between :"piDataI" and :"piDataF" and
> ML51.CODCONV containing :"piCodConv" and
> ML5.CODCOL containing :"piCodCol" and
> ML51.CODMEDS containing :"piCodMedS" and
> ML1.CODGRP containing :"piCodGrp"
> order by ML5.CODREQ
> into :"vCodConv", :"vCodPlano", :"vCodExa", :"vQtde",
> :"vData_Fat", :"vUrgente", :"vCodReq", :"vUrgPac", :"vMatMed",
> :"vCodCol", :"vCodMedS", :"vCodGrp"
> do
> begin
> select *
> from faz_faturamento(:"vCodConv", :"vCodPlano",
> :"vCodExa", :"vQtde", :"vData_Fat",
> :"vUrgente", :"vCodReq",
> :"vUrgPac", :"vMatMed", 'S')
> into :"poMoedaConv", :"poCodAMB",
> :"poTaxaUrg", :"csValBruto",
> :"csValLiquido", :"csValPac",
> :"csValPacTot", :"csValConv",
> :"csValConvTot", :"poValCh",
> :"poQtdCh", :"poMetraFilme",
> :"csValFilme", :"csValMatMed",
> :"csValMatMedConv", :"csValMatMedPac",
> :"poCobraFranq", :"csValFranq",
> :"poConvPart", :"poValChFilme",
> :"csAcrescimo", :"csAcrPlano",
> :"csFatorSetor", :"csAvista",
> :"poDescExa";
>
> "poValBruto" = "csValBruto";
> "poValLiquido" = "csValLiquido";
> "poValPac" = "csValPac";
> "poValPacTot" = "csValPacTot";
> "poValConv" = "csValConv";
> "poValConvTot" = "csValConvTot";
> "poValFilme" = "csValFilme";
> "poValMatMed" = "csValMatMed";
> "poValMatMedConv" = "csValMatMedConv";
> "poValMatMedPac" = "csValMatMedPac";
> "poValFranq" = "csValFranq";
> "poAcrescimo" = "csAcrescimo";
> "poAcrPlano" = "csAcrPlano";
> "poFatorSetor" = "csFatorSetor";
> "poAvista" = "csAvista";
>
> UPDATE ML51
> SET MOEDACONV = :"poMoedaConv",
> CODAMB = :"poCodAMB",
> TAXAURG = :"poTaxaUrg",
> VALBRUTO = :"poValBruto",
> VALLIQUIDO = :"poValLiquido",
> VALPAC = :"poValPac",
> VALPACTOT = :"poValPacTot",
> VALCONV = :"poValConv",
> VALCONVTOT = :"poValConvTot",
> VLCH = :"poValCh",
> QTDCH = :"poQtdCh",
> METRAFILME = :"poMetraFilme",
> VLFILME = :"poValFilme",
> VLMATMED = :"poValMatMed",
> VALMATMEDCONV = :"poValMatMedConv",
> VALMATMEDPAC = :"poValMatMedPac",
> COBRAFRANQ = :"poCobraFranq",
> VALFRANQ = :"poValFranq",
> CONVPART = :"poConvPart",
> VALCHFILME = :"poValChFilme",
> ACRESCIMO = :"poAcrescimo",
> ACRPLANO = :"poAcrPlano",
> FATORSETOR = :"poFatorSetor",
> AVISTA = :"poAvista",
> VLTOTAL = :"poValBruto"
> WHERE (ML51.CODREQ = :"vCodReq") AND (ML51.CODEXA = :"vCodExa") AND
> (ML51.CODCONV = :"vCodConv") AND (ML51.DATA_FAT = :"vData_Fat");
> end
> suspend;
>end
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
--
Esta mensagem foi verificada pelo sistema de anti-virus e
acredita-se estar livre de perigo.
Mais detalhes sobre a lista de discussão lista