Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kaolapso

[Resolvido] Parametros Procedure

Recommended Posts

Pessoal, tenho uma procedure que retorna dados de um unica tabela. Nesta procedure eu recebo 3 parametros mas eles não são obrigatórios. Minha dúvida é, qual a melhor forma de montar a query? Vou tentar exemplificar.

 

proc_retornaPessoa (nome, cod, rg);

if nome is not null and cod is null and rg is null then
select *
from  pessoas
where pes_nome like '%nome%'
end if;

if nome is not null and cod is not null and rg is null then
select *
from  pessoas
where pes_nome like '%nome%'
and   pes_cod = cod
end if;


 

Sei que poderia fazer um union também, mas a performance não seria melhor. Alguém tem alguma sugestão para essa situação?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o NVL

 

proc_retornaPessoa (pnome, pcod, prg);

If pnome is null and pcod is null and prg is null then
 raise-apllication_error(-20001,'Passe ao menos Um parametro PÔ ! :) ');
end if;

select *
from  pessoas
where pes_nome like '%' || nvl(pnome,trim(pes_nome)) || '%'
and   pes_cod = nvl(pcod ,pes_cod)
and   pes_rg = nvl(prg ,pes_rg;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o NVL

 

proc_retornaPessoa (pnome, pcod, prg);

If pnome is null and pcod is null and prg is null then
 raise-apllication_error(-20001,'Passe ao menos Um parametro PÔ ! :) ');
end if;

select *
from  pessoas
where pes_nome like '%' || nvl(pnome,trim(pes_nome)) || '%'
and   pes_cod = nvl(pcod ,pes_cod)
and   pes_rg = nvl(prg ,pes_rg;

 

Obrigado Motta, acho que funciona mesmo. Confirmo depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.