Oracle LISTAGG () zur Abfrage der Verwendung
Also versuche ich das zu nutzenLISTAGG () Funktion zum einfachen Erstellen einer durch Kommas getrennten Liste zur Verwendung in einer zugrunde liegenden Abfrage. Die Listengenerierung funktioniert einwandfrei und ich habe gerade eine Ausgabe für Debug-Zwecke angewendet, in der ich meine Liste so sehen kann, wie sie sein sollte:
WERTE: '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'
Wenn ich versuche, diese Listenvariable an meine Abfrage zu übergeben, aber nur um zu sehen, ob etwas zurückkommt, kommt nichts zurück, aber wenn ich die Liste der Provinzen / Bundesstaaten von oben (wie sie ist) kopiere / überschreite, anstatt "v_Province" in meiner zu verwenden where-Klausel, ich bekomme ein Ergebnis zurück. Was mache ich falsch?
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;
/