Fórum Erro em trigger firebird #60165

06/09/2008

0

Bom dia a todos,

Estou tentando fazer o seguinte:

AS

declare varQuantidade_Anterior float;
declare varQuantidade_Atual float;

begin

varQuantidade_Anterior = ´select qtd_atual from PRODUTO where ID_PRODUTO = ´+old.id_produto;

IF (old.quantidade_recebida > 0) then
Begin
Update PRODUTO
set qtd_atual = qtd_atual - old.quantidade_recebida
where PRODUTO.codigo_produto = old.id_produto;
End

varQuantidade_Atual = ´select qtd_atual from PRODUTO where ID_PRODUTO = ´+old.id_produto;

-- Atualiza Histórico do Produto
Begin
insert into PROD_HISTORICO ( id_historico, codigo_produto, codigo_usuario, historico, quantidade, nova_quantidade, data, ID_FORNECEDOR)
values (GEN_ID(GEN_PROD_HISTORICO,1), old.id_produto,old.id_usuario_mod,´Exclusão de entrada ´+old.id_entrada,:varQuantidade_Anterior, :varQuantidade_Atual, cast (´now´ as date), old.id_fornecedor);
End

end

[b:e3f780e1c1]mas ocore este erro:[/b:e3f780e1c1]


[i:e3f780e1c1]Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.[/i:e3f780e1c1]


Álison Bissoli

Álison Bissoli

Responder

Posts

07/09/2008

Sremulador

voce deve trabahar com o execute startment


Responder

Gostei + 0

07/09/2008

Emerson Nascimento

tente assim:
AS
  declare varQuantidade_Anterior float;
  declare varQuantidade_Atual float;
begin
  -- atribui o valor à variável varQuantidade_Anterior
  select qtd_atual from PRODUTO
  where ID_PRODUTO = old.id_produto into :varQuantidade_Anterior;

  if (coalesce(old.quantidade_recebida,0) > 0) then
    Update PRODUTO
      set qtd_atual = qtd_atual - old.quantidade_recebida
    where PRODUTO.codigo_produto = old.id_produto;

  -- atribui o valor à variável varQuantidade_Atual
  select qtd_atual from PRODUTO
  where ID_PRODUTO = old.id_produto into :varQuantidade_Atual;

  -- Atualiza Histórico do Produto
  insert into PROD_HISTORICO
    (id_historico, codigo_produto, codigo_usuario, historico,
     quantidade, nova_quantidade, data, ID_FORNECEDOR)
  values
    (GEN_ID(GEN_PROD_HISTORICO,1), old.id_produto, old.id_usuario_mod,
     ´Exclusão de entrada ´+cast(old.id_entrada as varchar(10)),
     :varQuantidade_Anterior, :varQuantidade_Atual, current_date, old.id_fornecedor);

end



Responder

Gostei + 0

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

Aceitar