Ajuda com Stored Procedure
Preciso montar um stored procedure, mas nao tenho ideia de como fazer, preciso retornar o saldo de um produto passado como parametro, o saldo sera o resultado da soma das entradas que estao em uma tabela chamada ENTRADAS subtraindo da soma das vendas que estao em uma tabela chamada VENDAS, utilizo delphi 7 com dbexpress e FB 2. Se alguem puder me ajudar a montar agradeço mt.
Abs
Felipe Ip
Curtidas 0
Respostas
Jeverson Paula
03/05/2011
CREATE PROCEDURE SP_ATUALIZA_SALDO
RETURNS (
REC_IDCONTASREC INTEGER,
ID_CLIENTE INTEGER,
VLR_SALDO DOUBLE PRECISION)
AS
declare variable NAVENCER DOUBLE PRECISION;
declare variable NVENCIDO DOUBLE PRECISION;
BEGIN UPDATE Tcontas_receber SET Tcontas_receber.Vlr_saldo = 0 ;
UPDATE Tpessoas SET Tpessoas.Pes_saldo_devedor = 0 ; FOR
SELECT
Tcontas_receber.Rec_idcontasrec,
Tcontas_receber.Id_cliente,
Tcontas_receber.Vlr_saldo
FROM Tcontas_receber
INTO :REC_IDCONTASREC,
:ID_CLIENTE,
:VLR_SALDO
DO
BEGIN Select
Coalesce(Sum(Parcelasrc.Valor_rec),0)
FROM Tcontas_receber
inner join Parcelasrc on Parcelasrc.Id_receber = Tcontas_receber.Rec_idcontasrec
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec
AND Parcelasrc.Data_vencimento > Current_date
and Parcelasrc.Data_rec is Null
INTO :Navencer; Select
Coalesce(Sum(Parcelasrc.Valor_rec),0)
FROM Tcontas_receber
inner join Parcelasrc on Parcelasrc.Id_receber = Tcontas_receber.Rec_idcontasrec
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec
AND Parcelasrc.Data_vencimento <= Current_date
and Parcelasrc.Data_rec is Null
INTO :Nvencido; UPDATE Tcontas_receber SET Tcontas_receber.Vlr_saldo = :Nvencido + :Navencer
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec ;
UPDATE Tpessoas SET Tpessoas.Pes_saldo_devedor = (Tpessoas.Pes_saldo_devedor + :Nvencido + :Navencer)
where Tpessoas.Pes_idpessoa = :Id_cliente; SUSPEND;
END
END Acho que esse exemplo pode te ajudar....
RETURNS (
REC_IDCONTASREC INTEGER,
ID_CLIENTE INTEGER,
VLR_SALDO DOUBLE PRECISION)
AS
declare variable NAVENCER DOUBLE PRECISION;
declare variable NVENCIDO DOUBLE PRECISION;
BEGIN UPDATE Tcontas_receber SET Tcontas_receber.Vlr_saldo = 0 ;
UPDATE Tpessoas SET Tpessoas.Pes_saldo_devedor = 0 ; FOR
SELECT
Tcontas_receber.Rec_idcontasrec,
Tcontas_receber.Id_cliente,
Tcontas_receber.Vlr_saldo
FROM Tcontas_receber
INTO :REC_IDCONTASREC,
:ID_CLIENTE,
:VLR_SALDO
DO
BEGIN Select
Coalesce(Sum(Parcelasrc.Valor_rec),0)
FROM Tcontas_receber
inner join Parcelasrc on Parcelasrc.Id_receber = Tcontas_receber.Rec_idcontasrec
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec
AND Parcelasrc.Data_vencimento > Current_date
and Parcelasrc.Data_rec is Null
INTO :Navencer; Select
Coalesce(Sum(Parcelasrc.Valor_rec),0)
FROM Tcontas_receber
inner join Parcelasrc on Parcelasrc.Id_receber = Tcontas_receber.Rec_idcontasrec
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec
AND Parcelasrc.Data_vencimento <= Current_date
and Parcelasrc.Data_rec is Null
INTO :Nvencido; UPDATE Tcontas_receber SET Tcontas_receber.Vlr_saldo = :Nvencido + :Navencer
WHERE Tcontas_receber.Rec_idcontasrec = :Rec_idcontasrec ;
UPDATE Tpessoas SET Tpessoas.Pes_saldo_devedor = (Tpessoas.Pes_saldo_devedor + :Nvencido + :Navencer)
where Tpessoas.Pes_idpessoa = :Id_cliente; SUSPEND;
END
END Acho que esse exemplo pode te ajudar....
GOSTEI 0