Oracle LISTAGG () para consultar o uso
Então, eu estou tentando fazer uso doLISTAGG () função para simplesmente criar uma lista delimitada por vírgulas para usar dentro de uma consulta subjacente. A geração de listas funciona bem e eu apenas apliquei uma saída para propósitos de depuração onde posso ver minha lista como deveria ser:
VALORES: «AB», «AZ», «BC», «CA», «CT», «DC», «FL», «FO», «GA», «IL», «KS», «MA», 'MB', 'ME', 'MN', 'MS', 'MT', 'NB', 'NC', 'NL', 'NOVA ESCÓCIA', 'NS', 'NT', 'NU', ' NY, ON, ONTÁRIO, OR, PE, QC, QUEBEC, QUÉBEC, SASKATCHEWAN, SK, TX, VT, WA. 'YT'
Quando eu tento passar essa variável de lista para minha consulta, só para ver se alguma coisa vai voltar, nada volta, mas se eu copiar / passar da lista de províncias / estados acima (como está) em vez de usar "v_Province" no meu onde cláusula, eu recebo um resultado de volta. O que estou fazendo de errado?
DECLARE
v_PROVINCE varchar2(500);
v_results varchar2(1000);
BEGIn
dbms_output.enable(1000000);
Select '''' || LISTAGG(STATE, ''',''') WITHIN GROUP (ORDER BY STATE) || '''' PROV
INTO v_PROVINCE
from (Select distinct STATE from ADDRDATA where STATE IS NOT NULL);
DBMS_OUTPUT.PUT_LINE('VALUES: ' || v_PROVINCE);
Select CITY
INTO v_results
from VWPERSONPRIMARYADDRESS
where state in (v_Province)
AND ROWNUM <= 1;
DBMS_OUTPUT.PUT_LINE(v_results);
END;
/