Amigos, estou tentando montar uma pequena procedure que me traga os dados de uma tabela chamada movimentacao.
No formulario, vou selecionar o nome do banco e o periodo
A estrutura da tabela é:
CODIGO
COD_BANCO //nome banco. ex BB, bradesco, itau
DATA
LANCAMENTO
TIPO //SE É CREDITO OU DEBITO.
VALOR
Achei essa procedure, mas não consegui entender como adaptar para pesquisar na minha tabela. Ao que entendi, essa SP seleciona os dados de duas tabelas e eu preciso de apenas 1
CREATE PROCEDURE SALDO_CONTA (
conta varchar(15),
datainicial date)
returns (
data date,
contamovimentada varchar(15),
saldoanterior numeric(15,2),
credito numeric(15,2),
debito numeric(15,2),
saldoatual numeric(15,2))
as
declare variable valorcredito numeric(15,2);
declare variable valordebito numeric(15,2);
declare variable datafinal date;
begin
data = datainicial;
contamovimentada = conta;
-- datafinal será sempre a data atual do sistema --
datafinal = current_date;
-- **************************************************************
-- estas linhas estão fora do while para que sejam -- *
-- executadas apenas 1 vez, aumentando a performance. -- *
-- depois apenas faço a soma dos valores obtidos dia a dia -- *
-- para sempre obter o saldo anterior correto -- *
-- **************************************************************
select coalesce(sum(valor),0) -- *
from credito -- *
where conta_c = :conta and data < :data into :valorcredito; -- *
-- *
select coalesce(sum(valor),0) -- *
from debito -- *
where conta_d = :conta and data < :data into :valordebito; -- *
-- *
-- obtenho o saldo anterior subtraindo o débito do crédito -- *
saldoanterior = valorcredito - valordebito; -- *
-- **************************************************************
-- verifico o movimento dia a dia, até o dia anterior à data atual
while (data <datafinal> 0) or (debito > 0)) then
suspend;
data = data + 1;
saldoanterior = saldoanterior + (credito - debito);
end
-- somo os créditos da data atual
select coalesce(sum(valor),0)
from credito
where conta_c = :conta and data = :data into :credito;
-- somo os débitos da data atual
select coalesce(sum(valor),0)
from debito
where conta_d = :conta and data = :data into :debito;
saldoatual = saldoanterior + (credito - debito);
-- exibe o registro com o saldo do dia atual
suspend;
end
Pergunta
renanbg
Amigos, estou tentando montar uma pequena procedure que me traga os dados de uma tabela chamada movimentacao.
No formulario, vou selecionar o nome do banco e o periodo
A estrutura da tabela é:
CODIGO COD_BANCO //nome banco. ex BB, bradesco, itau DATA LANCAMENTO TIPO //SE É CREDITO OU DEBITO. VALOR
Achei essa procedure, mas não consegui entender como adaptar para pesquisar na minha tabela. Ao que entendi, essa SP seleciona os dados de duas tabelas e eu preciso de apenas 1
O resultado da procedure acima, seria algo assim
data |conta |saldo anterior | debito | credito | saldo atual 31/01/06 6 0,00 0,00 60,00 60,00 28/02/06 6 60,00 0,00 30,00 90,00 31/03/06 6 90,00 40,00 0,00 50,00 30/04/06 6 50,00 60,00 0,00 -10,00 19/01/07 6 -10,00 0,00 0,00 -10,00
Alguma sugestão?
Editado por renanbgLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.