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;
  /

Antworten auf die Frage(2)

Ihre Antwort auf die Frage