Ir para conteúdo
Fórum Script Brasil

delphisempre

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que delphisempre postou

  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;
×
×
  • Criar Novo...