Erro em trigger 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
[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]
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
Curtidas 0
Respostas
Sremulador
06/09/2008
voce deve trabahar com o execute startment
GOSTEI 0
Emerson Nascimento
06/09/2008
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
GOSTEI 0