Boas senhores,
Preciso fazer um decode no where, mas uma das condições preciso passar uma lista e ai não rola...
lista = (49,58,60)
select 'teste' from dual
where '49' in (decode('a','a',lista,167))
Fiz assim
select 'teste' from dual
where '49' in (decode('a','a',49,58,60,167))
Tentei assim tb...
where '49' in (decode('a','a',49||','||64,167))
Alguém tem a saída..
Obrigado
t+
Como usar lista em decode?
- souldeath
- Rank: Programador Sênior
- Mensagens: 48
- Registrado em: Qua, 25 Ago 2010 9:39 am
- Localização: Limeira
Precisei fazer algo semelhante recentemente, essa lista são de strings?
Verifica se consegue dessa forma abaixo:
Referência: https://oracle-base.com/articles/misc/dynamic-in-lists
Verifica se consegue dessa forma abaixo:
CREATE OR REPLACE TYPE t_in_list_tab AS TABLE OF VARCHAR2 (4000);
/
CREATE OR REPLACE FUNCTION in_list (p_in_list IN VARCHAR2)
RETURN t_in_list_tab PIPELINED
AS
l_text VARCHAR2(32767) := p_in_list || ',';
l_idx NUMBER;
BEGIN
LOOP
l_idx := INSTR(l_text, ',');
EXIT WHEN NVL(l_idx, 0) = 0;
PIPE ROW (TRIM(SUBSTR(l_text, 1, l_idx - 1)));
l_text := SUBSTR(l_text, l_idx + 1);
END LOOP;
RETURN;
END;
/
select 'teste'
from dual
where '49' in (decode('a','a',SELECT column_value FROM TABLE(in_list('49,58,60')),167))
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante