[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