Fórum SP não está funcionando corretamente #301010

27/10/2005

0

Boa tarde a todos...

Galera o que está de errado com essa SP:

begin
 saldo_ant_debito=0;
 saldo_ant_credito=0;

  select sum(conta.conta_valor) from conta
  where (conta.conta_tp = 0) and (conta.cli_cod = :cliente)
  into :saldo_ant_debito;

  select sum(conta.conta_valor) from conta
  where (conta.conta_tp = 1) and (conta.cli_cod = :cliente)
  into :saldo_ant_credito;

  if (:saldo_ant_credito is null) then
   saldo_ant_credito = 0.00;

  if (:saldo_ant_debito is null) then
  saldo_ant_debito = 0.00;

  historico = ´SALDO ANTERIOR´;
  valor = (saldo_ant_credito - saldo_ant_debito);

  saldo_final = valor;

  if (:valor < 0) then
  begin
    tipo = ´D´;
    valor = valor * -1;
  end
  else
  begin
    tipo = ´C´;
  end

  suspend; 

  tipo = ´D´;
  lanca_credito = null;

  tipo = ´D´; 

  for select conta.conta_desc, conta.conta_valor
      from conta
      where (conta.conta_tp = 0) and (conta.cli_cod = :cliente)
      into :historico, :lanca_debito
  do
  begin
    saldo_final = saldo_final - valor;
    suspend;
  end

 tipo = ´C´; 
 lanca_debito = null;

  for select conta.conta_desc, conta.conta_valor
      from conta
      where (conta.conta_tp = 1) and (conta.cli_cod = :cliente)
      into :historico, :lanca_credito
  do
  begin
    saldo_final = saldo_final + valor;
    suspend;
  end

  lanca_debito = null;
  lanca_credito = null;
  historico = ´SALDO FINAL´;
  tipo = ´C´;
  valor = saldo_final;
  suspend;
end


[b:26f3bf9c5b]P.S: Os Parâmetros de Entrada: CLIENTE (INTEGER)
Parâmetros de Saída: LANCA_CREDITO, LANCA_DEBITO, VALOR (NUMERIC(18,2))
TIPO (CHAR(1))
CODIGO (INTEGER)
HISTORICO (VARCHAR(20))
Variáveis: SALDO_ANT_DEBITO, SALDO_ANT_CREDITO, SALDO_FINAL (NUMERIC(18,2))[/b:26f3bf9c5b]


Crashovewrite

Crashovewrite

Responder

Posts

27/10/2005

Emerson Nascimento

não sei o que pode estar errado, porque você não disse qual é o problema. de qualquer forma, sempre trate os valores numericos caso execute alguma operação com eles.

begin 
  saldo_ant_debito=0; 
  saldo_ant_credito=0; 

  select coalesce(sum(conta.conta_valor),0) from conta 
  where (conta.conta_tp = 0) and (conta.cli_cod = :cliente) 
  into :saldo_ant_debito; 

  select coalesce(sum(conta.conta_valor),0) from conta 
  where (conta.conta_tp = 1) and (conta.cli_cod = :cliente) 
  into :saldo_ant_credito; 

  historico = ´SALDO ANTERIOR´; 
  valor = (saldo_ant_credito - saldo_ant_debito); 

  saldo_final = valor; 

  if (:valor < 0) then 
  begin 
    tipo = ´D´; 
    valor = valor * -1; 
  end 
  else 
  begin 
    tipo = ´C´; 
  end 

  suspend; 

  tipo = ´D´; 
  lanca_credito = null; 

  for select conta.conta_desc, coalesce(conta.conta_valor,0)
      from conta 
      where (conta.conta_tp = 0) and (conta.cli_cod = :cliente) 
      into :historico, :lanca_debito
  do 
  begin 
    /*** tem certeza que é esse o cálculo??? ***/
    saldo_final = saldo_final - valor;
    suspend; 
  end 

  tipo = ´C´; 
  lanca_debito = null; 

  for select conta.conta_desc, coalesce(conta.conta_valor,0) 
      from conta 
      where (conta.conta_tp = 1) and (conta.cli_cod = :cliente) 
      into :historico, :lanca_credito
  do 
  begin
    /*** tem certeza que é esse o cálculo??? ***/ 
    saldo_final = saldo_final + valor;
    suspend; 
  end 

  lanca_debito = null; 
  lanca_credito = null; 
  historico = ´SALDO FINAL´; 
  tipo = ´C´; 
  valor = saldo_final; 
  suspend; 
end



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar