SELECT…WHERE IN(expressionList)语句的expressionList可以是变量吗?

问题描述 投票:1回答:1

下面的代码创建一个过滤器,我已成功将其追加到现有的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_FILTERreserve reporting_unit_code IN ('86749')

P_LoggedInUserRoles只有一个值时,这很好用。但是,如果变量中有逗号分隔的列表,则该列表不起作用。我尝试将expressionList定义为数组。 PL / SQL不使用该方法进行编译。

expressionList是否限制使用文字值,如果一个具有多个值?我在任何手册中都找不到该显式语句,但是我无法将expressionList定义为一个值集合的变量。]​​>

以下代码创建了一个过滤器,我已将其成功附加到现有的sql语句中。 DECLARE V_FILTER VARCHAR2(255);开始SELECT DISTINCT'保留reporting_unit_code'||' IN('|| ...

sql oracle plsql
1个回答
1
投票

不,您不能,但是您很亲近

© www.soinside.com 2019 - 2024. All rights reserved.