そのため、 LISTAGG()関数を使用して、基になるクエリ内で使用するカンマ区切りのリストを作成しようとしています。リストの生成は正常に機能し、デバッグ目的で出力を適用したところ、リストを本来あるべき姿で表示できます。
値: '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'、'ケベック'、'ケベック'、'サスカチュワン'、'SK'、'TX'、'VT'、'WA' ,'YT'
このリスト変数をクエリに渡そうとすると、何かが返されるかどうかを確認するためだけに、何も返されませんが、「v_Province」を使用する代わりに、上から州/州リストをコピー/ペーストすると (そのまま) where句、結果が返されます。私は何を間違っていますか?
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;
/