delphisempre

Membros
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Neutro

About delphisempre

Recent Profile Visitors

107 profile views
  1. Olá, boa tarde Trabalhando ainda na minha tabela MovimentacaoBancaria, Fiz uma Stored Procedure para fazer um Update na tabela toda vez que o Usuario fizer uma alteração no valor do Débito ou do Crédito a Stored Procedure pega o saldo anterior do registro atual, pega o valor que foi alterado e atualiza o saldo atual. Mas além disso, gostaria que, por exemplo, tiver 15 registros lançados, ele atualizou a linha 5 e tiver mais 10 registros depois, a Procedure atualizasse todos os saldos anteriores e atuais subsequentes até o último registro. Estou postando a Stored Procedure que fiz, pois ela não está atualizando nem o registro atual e nem os saldos subsequentes. Obs: O teste que fiz usando o IBExpert e Firebird 2.5 ao executar a Stored Procedure apresenta a seguinte mensagem: multiple rows in singleton select. multiple rows in singleton select. At procedure 'MOVIMENTACAOBANCARIA_UPD' line: 27, col: 6. Desde já agradeço pela ajuda. SET TERM ^ ; PROCEDURE MOVIMENTACAOBANCARIA_UPD ( P_CON_CODIGO Integer, P_MOV_DATADOLANCAMENTO Date, P_MOV_CREDITO Numeric(15,2), P_MOV_DEBITO Numeric(15,2), P_MOV_DATAALTERACAO Date, P_MOV_DESCRICAO Varchar(40) ) AS DECLARE VARIABLE v_saldo_anterior numeric(15,2); DECLARE VARIABLE v_saldo_atual numeric(15,2); BEGIN begin SELECT MOV_SALDOANTERIOR FROM MOVIMENTACAOBANCARIA WHERE CON_CODIGO =:p_con_codigo And MOV_DATADOLANCAMENTO = :P_MOV_DATADOLANCAMENTO INTO v_saldo_anterior; v_saldo_anterior = coalesce(:v_saldo_anterior, 0); end v_saldo_atual = :v_saldo_anterior + :p_mov_credito - :p_mov_debito; IF (EXISTS(SELECT 1 FROM MOVIMENTACAOBANCARIA WHERE CON_CODIGO = :P_CON_CODIGO AND MOV_DATADOLANCAMENTO = :P_MOV_DATADOLANCAMENTO)) THEN BEGIN UPDATE MOVIMENTACAOBANCARIA SET con_codigo = :p_con_codigo, mov_datadolancamento = :p_mov_datadolancamento, mov_saldoanterior = :v_saldo_anterior, mov_credito = :p_mov_credito, mov_debito = :p_mov_debito, mov_saldoatual = :v_saldo_atual, mov_dataalteracao = 'now', mov_descricao = :p_mov_descricao Where CON_CODIGO = :p_con_codigo And mov_datadolancamento = :p_mov_datadolancamento; END END^ SET TERM ; ^ GRANT EXECUTE ON PROCEDURE MOVIMENTACAOBANCARIA_UPD TO SYSDBA;