Galera, boa noite.
Seguinte, preciso fazer a seguinte verificação num bloco, só pode aceitar registros com o mesmo tipo, por exemplo:
01 - Produto 01 - Alimento
02 - Produto 02 - Alimento
ou
01 - Produto 01 - NULL
02 - Produto 02 - NULL
Não pode acontecer o seguinte:
01 - Produto 01 - Alimento
02 - Produto 02 - Limpeza
ou
01 - Produto 01 - NULL
02 - Produto 02 - Alimento
Esse campo que eu tenho que fazer a verificação é armazenado na tabela como number, exceto quando está NULL (Lógico né *rs*).
Me pediram para fazer essa verificação na trigger PRE-INSERT e no POST-QUERY se não me engano, tentei fazer no Pre-Insert do bloco pai, mas não consegui. Tentei das seguintes formas: 1# Usando o go_block e fazendo um loop no bloco, mas o go_block não pode ser usado no Pre-Insert. 2# Tentei fazer select na base, mas estou tendo problemas com os campos NULL.
Dai eu queria uma luz dos colegas aqui de como vocês fariam isso, de preferência, tentando fazer nas duas triggers ali em cima ( Antes de Inserir e antes de Atualizar).
[ ]s
Bloco só aceita registro com os mesmo "tipos"
- tiago_pimenta
- Rank: DBA Júnior
- Mensagens: 213
- Registrado em: Qua, 29 Jun 2011 9:49 am
- Localização: Barretos / SP
- tiago_pimenta
- Rank: DBA Júnior
- Mensagens: 213
- Registrado em: Qua, 29 Jun 2011 9:49 am
- Localização: Barretos / SP
E aí galera, ninguém ???
Bom, tentei fazer com o código abaixo, mas queria uma opinião de vocês para saber se é a melhor forma:
Desse jeito, estou com problemas quando só se tem 1 registro, pois com o next_record, ele dá um "insert" e alguns campos são obrigatórios.
Att.
Tiago Pimenta
Bom, tentei fazer com o código abaixo, mas queria uma opinião de vocês para saber se é a melhor forma:
/* Verificando se os tipos de dose são diferentes */
declare
v_n_tipo number := 0;
v_n_count number := 0;
begin
go_block('medicamento_protocolo');
first_record;
v_n_tipo := :medicamento_protocolo.class_id_tipo_dose;
next_record;
loop
if v_n_tipo != :medicamento_protocolo.class_id_tipo_dose then
v_n_count := v_n_count + 1;
end if;
exit when :system.last_record = 'TRUE';
next_record;
end loop;
if v_n_count > 0 then
msg('Não é permitido Tipos de Dose diferentes no mesmo regime!');
raise form_trigger_failure;
else
commit;
:medicamento_protocolo.tipo_dose := pck_util.fnc_get_descricao_class(:medicamento_protocolo.class_id_tipo_dose);
end if;
end;
Att.
Tiago Pimenta
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes