所以我试图利用列表()函数来简单地构建一个逗号分隔列表以在基础查询中使用。列表生成工作正常,我只是应用了一个用于调试目的的输出,我可以在其中看到我的列表,因为它应该是:
价值观:
'AB','AZ','BC','CA','CT','DC','FL','FO','GA','IL','KS','MA','MB ','ME','MN','MS','MT','NB','NC','NL','NOVA
斯科舍省'、'NS'、'NT'、'NU'、'NY'、'ON'、'安大略省'、'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;
/