Oracle LISTAGG () para consultas de uso
Así que estoy tratando de hacer uso de laLISTAGG () función para simplemente construir una lista delimitada por comas para usar dentro de una consulta subyacente. La generación de la lista funciona bien y acabo de aplicar una salida para fines de depuración donde puedo ver mi lista como debería ser:
VALORES: 'AB', 'AZ', 'BC', 'CA', 'CT', 'DC', 'FL', 'FO', 'GA', 'IL', 'KS', 'MA', 'MB', 'ME', 'MN', 'MS', 'MT', 'NB', 'NC', 'NL', 'NOVA SCOTIA', 'NS', 'NT', 'NU', ' NY ',' ON ',' ONTARIO ',' OR ',' PE ',' QC ',' QUEBEC ',' QUÉBEC ',' SASKATCHEWAN ',' SK ',' TX ',' VT ',' WA ' , 'YT'
Sin embargo, cuando intento pasar esta variable de lista a mi consulta solo para ver si algo regresará, nada volverá, pero si copio / supero la lista de provincias / estados de arriba (como es) en lugar de usar "v_Province" en mi Donde la cláusula, me devuelven un resultado. ¿Qué estoy haciendo mal?
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;
/