Erro em trigger do firebird
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.
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
Curtidas 0
Respostas
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.
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