OPERADOR IN (PARAMETRO)

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 09 Mai 2016 3:37 pm

Prezados boa tarde!

Estou desenvolvendo uma package, de onde será chamado de uma determinada tela.
Onde por exemplo: É selecionado por escolha em um chekbooks, 1,2,3 ou somente 1 ou todos.
Lembro que já desenvolvi no passado pelo sql dinamico, onde utilizava o comando IN (||''PARAMETRO''||). alguém pode me dizer, se atualmente
possui uma forma mais dinamnica de fazer isto, sem ser por sql dimamico?

Exemplos:

Código: Selecionar todos
Select *
from produtos
where cdg_prodto IN (||'p_parametro'||);



Que seria opcional, selecionado (1,2,3). Quando passo parametro, ele me retorna somente a consulta do 1 e não dos 3 itens selecionadod.

Obrigada.

Katia Cristine
katiacd

Mensagemem Seg, 09 Mai 2016 4:09 pm

Boa tarde Katia,

Se vão existir no máximo três parâmetros, talvez seja mais fácil criar parâmetros na procedure.

mais ou menos assim:

Código: Selecionar todos
Procedure Sp_Produto (v_par1 varchar2,
                      v_par2 varchar2,
                      v_par3 varchar2) is
--
cursor c is
  select dsp_prodto
  from   produtos
  where  cdg_prodto in(v_par1, v_par2, v_par3);
c_r c%rowtype;
begin
open c;
  loop
   fetch c into c_r;
    exit when c%notfound;
    dbms_output.put_line(c_r.dsp_prodto);
  end loop;
close c;
end;
/
spernega
Localização: São Paulo - SP

Mensagemem Ter, 10 Mai 2016 8:29 pm

obrigada spernega...


Me ajudou muito...
katiacd

Mensagemem Sáb, 06 Ago 2016 9:58 am

Bom dia Kátia,

Você pode tratar o campo e o parâmetro com vírgulas, da seguinte forma

Código: Selecionar todos
Select *
from produtos
where '%,'||'p_parametro'||',%' like '%,'||cdg_prodto||',%'


Exemplo:
Se passar o parâmetro '1,2,3' ficará: ',1,2,3,'
Se o o campo cdg_prodto for '2' ficará ',2,'

Ficará assim:
where %',1,2,3,'% like %',2,'%

Espero ter ajudado!
Abraço
geovani
Localização: Joinville-SC

Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes