下面的代码创建一个过滤器,我已成功将其追加到现有的sql语句。
DECLARE V_FILTER VARCHAR2(255);
begin
SELECT DISTINCT 'reserve reporting_unit_code' ||' IN (' ||
listagg ( chr(39) || uic || chr(39) , ',') within group (order by uic) || ')'
into v_FILTER
from ( select distinct uicf.uic
FROM OWSADHOC.ADHOC_UIC_FILTER UICF
INNER JOIN OWSADHOC.ADHOC_USER_ROLE UROLE
ON UICF.ROLE_NAME = UROLE.ROLE_NAME
inner join OWSADHOC.ADHOC_USER_DATA uname
on uname.USER_ID = UROLE.USER_ID
WHERE UROLE.ROLE_NAME in (:P_LoggedInUserRoles)
and uname.JASPER_ACCOUNT = :P_LoggedInUserName
)
;
DBMS_OUTPUT.PUT_LINE ('GENERATED FILTER: ' || V_FILTER);
end;
[v_FILTER
是reserve reporting_unit_code IN ('86749')
P_LoggedInUserRoles
只有一个值时,这很好用。但是,如果变量中有逗号分隔的列表,则该列表不起作用。我尝试将expressionList定义为数组。 PL / SQL不使用该方法进行编译。
expressionList是否限制使用文字值,如果一个具有多个值?我在任何手册中都找不到该显式语句,但是我无法将expressionList定义为一个值集合的变量。]>
以下代码创建了一个过滤器,我已将其成功附加到现有的sql语句中。 DECLARE V_FILTER VARCHAR2(255);开始SELECT DISTINCT'保留reporting_unit_code'||' IN('|| ...
不,您不能,但是您很亲近