Erro em trigger do firebird

Delphi

06/09/2008

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

mas ocore este erro:


Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.


Álison Bissoli

Álison Bissoli

Curtidas 0

Respostas

Romulocpd

Romulocpd

06/09/2008

Acho que há um erro na forma de atribuir o valor as varíaveis. Está parecendo que vc conhece T-SQL que é desta forma (ou pode ser desta forma) mas tente a seguinte:

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

Troca para:

SELECT QTD_ATUAL FROM PRODUTO WHERE ID_PRODUTO = OLD.ID_PRODUTO INTO :varQuantidadeAnterior;

Será algo assim, dá uma pesquisada sobre STORED PROCEDURE FIREBIRD no google que terá os resultados precisos.


GOSTEI 0
POSTAR