Kaolapso 0 Denunciar post Postado Dezembro 19, 2011 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
Motta 645 Denunciar post Postado Dezembro 19, 2011 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
Kaolapso 0 Denunciar post Postado Dezembro 20, 2011 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
Kaolapso 0 Denunciar post Postado Dezembro 21, 2011 Beleza, era isso mesmo. Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites