Ajuda com Código PL

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
gee
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Ter, 23 Out 2012 8:43 am
Geraldo Viana Jr
Oracle SQL - PL/SQL Developer
Oracle Developer Application

Bom dia Galera, preciso de ajuda na seguinte instrução:

Selecionar tudo

SELECT count(cre_key_tipo)
INTO   v_count
FROM   table
WHERE  cre_key_tipo = 'G'
AND cre_key_tipo IN (SELECT cli_id FROM cliente_regime_especial
                      WHERE cre_key_tipo = (SELECT cre_key_tipo
                                             FROM table
                                             WHERE cre_key_tipo = 'E'));         
                



SELECT count(cre_key_tipo)
INTO   v_count
FROM  table
WHERE  cre_key_tipo = 'E'
AND cre_key_tipo IN (SELECT cli_id FROM cliente_regime_especial
                      WHERE cre_key_tipo IN (SELECT cre_key_tipo
                                             FROM table
                                             WHERE cre_key_tipo = 'G'));
                      
                      



if v_count > 1 and w_count > 1 then
	
	botao:=alerta('STOP1','Só é permitido um tipo de Regime especial por cliente!');
	raise form_trigger_failure;

end if;
Eu preciso que dentro de um forms um cliente que possuir a flag 'G', não poderá possuir mais nenhuma flag 'E', mas ao mesmo tempo ele pode possuir diversas flag 'E' caso não possua nenhuma flag 'G'.


alguém me ajuda nessa?
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

acho que ficaria melhor assim:

Selecionar tudo

    SELECT count(cre_key_tipo)
    INTO   v_count_G
    FROM   cliente_regime_especial
    where cli_id = :codigo_cliente
    and cre_key_tipo = 'G'
    Exception 
    When others then
       v_count_G :=0;
           

    SELECT count(cre_key_tipo)
    INTO   v_count_E
    FROM   cliente_regime_especial
    where cli_id = :codigo_cliente
    and cre_key_tipo = 'E'
    Exception 
    When others then
       v_count_E :=0;


    If ((v_count_G > 0) and (v_count_E > 0)) then
       botao:=alerta('STOP1','Só é permitido um tipo de Regime especial por cliente!');
       raise form_trigger_failure;
    end if;
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 325
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Boa tarde Amigo.

Tente utilizar o DECODE na clausula WHERE.

Abç.,
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante