[firebase-br] Porquê o update não funciona?

Maciel Soncini Bueno maciel em 2msolutions.com.br
Seg Jan 9 18:29:07 -03 2006


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





Mais detalhes sobre a lista de discussão lista