Problema com domain na criação de triggers e também de stored procedures
Estou com problema na criação de triggers e stored procedures usando domains, principalmente os do tipo boolean que são emulados pelos domains, segue abaixo a minha trigger com o seguinte erro:
create trigger trg_itens_bi for itens before insert
as
declare variable v_operacao d_operacao_doc;
begin
select operacao
from documentos
where codigo = new.produto
into :v_operacao;
if (:v_operacao = E) then
update produtos
set saldo = saldo + new.quantidade
where codigo = new.produto;
if (:v_operacao = S) then
update produtos
set saldo = saldo - new.quantidade
where codigo = new.produto;
end
Erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 33.
d_operacao_doc.
O domain d_operacao_doc está como varchar(1) check (value in (E, S), está corretamente cadastrado no banco de dados.
Espero ajuda!
create trigger trg_itens_bi for itens before insert
as
declare variable v_operacao d_operacao_doc;
begin
select operacao
from documentos
where codigo = new.produto
into :v_operacao;
if (:v_operacao = E) then
update produtos
set saldo = saldo + new.quantidade
where codigo = new.produto;
if (:v_operacao = S) then
update produtos
set saldo = saldo - new.quantidade
where codigo = new.produto;
end
Erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 33.
d_operacao_doc.
O domain d_operacao_doc está como varchar(1) check (value in (E, S), está corretamente cadastrado no banco de dados.
Espero ajuda!
Lucas Oliveira
Curtidas 0
Respostas
Deivison Melo
27/04/2012
Bom dia,
Ao invés de usar o d_operacao_doc deverá usar o tipo do campo (varchar, integer e etc)...
Ao invés de usar o d_operacao_doc deverá usar o tipo do campo (varchar, integer e etc)...
GOSTEI 0
Lucas Oliveira
27/04/2012
Bom dia Deivison,
Ao substituir o domain por um char(1) ou varchar(1) ele dá certo, porém não funciona a função booleana dela. Como eu criei uma procedure com exception de usuários onde só o usuário que tem as permissões podem alterar, sempre dá erros, como se o usuário não tivesse permissões. Ou seja, a melhor forma seria utilizar os domains, porém no Ibexpert que utilizo parece que não aceita ou falta a mim colocar mais alguma coisa junto com o domain para que possa dar certo.
Espero ajuda.
Ao substituir o domain por um char(1) ou varchar(1) ele dá certo, porém não funciona a função booleana dela. Como eu criei uma procedure com exception de usuários onde só o usuário que tem as permissões podem alterar, sempre dá erros, como se o usuário não tivesse permissões. Ou seja, a melhor forma seria utilizar os domains, porém no Ibexpert que utilizo parece que não aceita ou falta a mim colocar mais alguma coisa junto com o domain para que possa dar certo.
Espero ajuda.
GOSTEI 0