Seguinte, tenho uma procedure onde existe esse select abaixo que retorna 4 colunas, sendo que a ultima com o nome "FAMILIAR" que tem o resultado de um de decode,
feito a partir da variavel "decodeVALUE" que atribui o valor de um select usando o LISTAGG.
sql_select_stmt := 'SELECT p.id_prot, p.MATRICULA, p.documento' ;
-- Decode FAMILIAR: starting from code into descr
SELECT LISTAGG(KEY||','''||VALUE||'''', ',') WITHIN GROUP (ORDER BY KEY) INTO decodeVALUE FROM TB_CONFIGURACAO WHERE GRUPO='FAMILIAR';
sql_select_stmt := sql_select_stmt || ',DECODE(p.FAMILIAR,'||decodeVALUE||',p.FAMILIAR) AS FAMILIAR';
O problema é que o LISTAGG tem um limite para concatenar valores, e no momento esta estorando esse limite, minha solução é,
não usar mais o LISTAGG e ao invés de fazer o decode usar JOIN, só que estou sem ideia agora como montar, se alguém poder me ajudar agradeço.
A tabela que é feito o decode é: TB_PROTOCOLO p.
Segue o select abaixo:
SELECT MONTATO É ESSE: SELECT p.id_prot, p.MATRICULA, p.documento,DECODE(p.FAMILIAR,1,'Chamado aberto',2,'Cliente atendido',3,'Cliente Atendido',p.FAMILIAR) as FAMILIAR
RESULTADO QUE GERA HOJE:
ID_PROT MATRICULA DOCUMENTO FAMILIAR
-------------------- ----------- -------------- ----------------------------------------
12349 11111111 321321 Chamado aberto
21 99999 99999 Chamado aberto
22 99999 99999 Chamado aberto
23 99999 99999 Chamado aberto
24 99999 99999 Chamado aberto
12 999923344 12345 7
Obrigado