Fórum precisando ajuda em procedure para atualizar saldo na tabela entradas #420283

21/07/2012

0

Ola Pessoal da erro na linha 25 onde esta marcado falou, Precisando de ajuda,

PROCEDURE para atualizar o saldo de um caixa tabela entrada

set term ^
CREATE PROCEDURE SET_SALDO_ENTRADA
(
P_ID_ENTRADA INTEGER,
P_DATA date,
P_VALOR NUMERIC(15,2),
P_TIPO VARCHAR(10),
P_HISTORICO VARCHAR(20),
P_PESSOA VARCHAR(40),
P_SALDO NUMERIC(15,2)
)
AS
declare variable v_saldo_anterior numeric(15,2);
declare variable v_saldoatual numeric(15,2);
declare variable v_lancamento_anterior integer;
begin
/*pega o codigo do lançamento anterior */

select max(E_ENTRADA)
from ENTRADA
where ID_ENTRADA = :P_ID_ENTRADA
into v_lancamento_anterior;
/*se não há lançamento anterior então o saldo é zero */


/*erro na linha 25aqui embaixo não passa daqui se tendo nil ao inves de null não passa da linha 22 */
/*onde se escreve into v_lancamento_anterior; acima */
if (v_lancamento_anterior is null) then
begin
v_saldo_anterior = 0
else
begin
/*pega o saldo do lancamento anterior */
select E_SALDO
from ENTRADA
where codigo = v_lacamento_anterior
into v_saldo_anterior;
end
/*se for nulo muda o valor para zero */

if :v_saldoanterior is null) then
begin
v_saldo_anterior = cloalesce(:v_saldo_anterior,0);
end
*saldo atual */
v_saldo_atual = :v_saldo_anterior + :p_valor;
/*gera um novo lancamento */
insert into ENTRADA (id_entrada,e_data,e_valor,tipo,historico,pessoa,saldo)
values(:p_id_entrada,:p_data,:p_valor,:p_tipo,p:historico,p:pessoa,:v_saldoatual);

end ^

set term; ^
Marcelo Augusto

Marcelo Augusto

Responder

Posts

21/07/2012

Deivison Melo

Já tentou usar o comparativo = ao invés de is null ?

ficando assim:

PROCEDURE para atualizar o saldo de um caixa tabela entrada

set term ^
CREATE PROCEDURE SET_SALDO_ENTRADA
(
P_ID_ENTRADA INTEGER,
P_DATA date,
P_VALOR NUMERIC(15,2),
P_TIPO VARCHAR(10),
P_HISTORICO VARCHAR(20),
P_PESSOA VARCHAR(40),
P_SALDO NUMERIC(15,2)
)
AS
declare variable v_saldo_anterior numeric(15,2);
declare variable v_saldoatual numeric(15,2);
declare variable v_lancamento_anterior integer;
begin
/*pega o codigo do lançamento anterior */

select max(E_ENTRADA)
from ENTRADA
where ID_ENTRADA = :P_ID_ENTRADA
into v_lancamento_anterior;
/*se não há lançamento anterior então o saldo é zero */


/*erro na linha 25aqui embaixo não passa daqui se tendo nil ao inves de null não passa da linha 22 */
/*onde se escreve into v_lancamento_anterior; acima */
if (v_lancamento_anterior = null) then
begin
v_saldo_anterior = 0
else
begin
/*pega o saldo do lancamento anterior */
select E_SALDO
from ENTRADA
where codigo = v_lacamento_anterior
into v_saldo_anterior;
end
/*se for nulo muda o valor para zero */

if :v_saldoanterior = null) then
begin
v_saldo_anterior = cloalesce(:v_saldo_anterior,0);
end
*saldo atual */
v_saldo_atual = :v_saldo_anterior + :p_valor;
/*gera um novo lancamento */
insert into ENTRADA (id_entrada,e_data,e_valor,tipo,historico,pessoa,saldo)
values(:p_id_entrada,:p_data,:p_valor,:p_tipo,p:historico,p:pessoa,:v_saldoatual);

end ^

set term; ^
Responder

Gostei + 0

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

Aceitar