Search code examples
oracle-databaseoracle12cmaterialized-views

ORA-32359: cannot specify the FRESH_MV hint for this query - Query on RTMV


I hope anyone can help me. I am designing a model with some RTMV (Real Time Materialized Views) in Oracle 12.2. I create all the MV logs and define the refresh group as well as the jobs to do it. So far all good..

However the query that I need to run over them does not work because apparently using either DUAL , REGEXP_SUBSTR or CONNECT BY LEVEL is not compatible with the hint FRESH_MV. I need to use the hint because the query is done over the RTMVs, and that is the only way to get the real time data ( as far as I know ).

If the hint cannot be used, I would like to know how to rewrite the condition shown below in order to avoid using DUAL, CONNECT BY LEVEL and REGEXP_SUBSTR.

AND (:var15  IS NULL OR sel.vinLast6 IN (select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var17 ,''), '[^,]+', 1, level) is not NULL))

Let me show you

SQL> set sqlblanklines on echo on timing on lines 220 pages 600 autotrace traceonly
var var1 varchar2(200);
var var2 varchar2(200);
var var3 varchar2(200);
var var4 varchar2(200);
var var5 varchar2(200);
var var6 varchar2(200);
var var7 varchar2(200);
var var8 varchar2(200);
var var9 varchar2(200);
var var10 varchar2(200);
var var11 varchar2(200);
var var12 varchar2(200);
var var13 varchar2(200);
var var14 varchar2(200);
var var15 varchar2(200);
var var16 varchar2(200);
var var17 varchar2(200);
var var18 varchar2(200);
var var19 varchar2(200);
var var20 varchar2(200);
var var21 varchar2(200);
var var22 varchar2(200);
var var23 varchar2(200);
var var24 varchar2(200);
var var25 varchar2(200);
var var26 varchar2(200);
var var27 varchar2(200);
var var28 varchar2(200);
var var29 varchar2(200);
var var30 varchar2(200);
var var31 varchar2(200);
var var32 varchar2(200);
var var33 varchar2(200);
var var34 varchar2(200);
var var35 varchar2(200);
var var36 varchar2(200);
var var37 varchar2(200);
var var38 varchar2(200);
var var39 varchar2(200);
var var40 varchar2(200);
var var41 varchar2(200);
var var42 varchar2(200);
var var43 varchar2(200);
var var44 varchar2(200);
var var45 varchar2(200);
var var46 varchar2(200);
var var47 varchar2(200);
var var48 varchar2(200);
var var49 varchar2(200);
var var50 varchar2(200);
var var51 varchar2(200);
var var52 varchar2(200);
var var53 varchar2(200);
var var54 varchar2(200);
var var55 varchar2(200);
var var56 varchar2(200);
var var57 varchar2(200);
var var58 varchar2(200);
var var59 varchar2(200);
var var60 varchar2(200);
var var61 varchar2(200);
var var62 varchar2(200);
var var63 varchar2(200);
var var64 varchar2(200);
var var65 varchar2(200);
var var66 varchar2(200);
var var67 varchar2(200);
var var68 varchar2(200);
var var69 varchar2(200);
var var70 varchar2(200);
var var71 varchar2(200);
var var72 varchar2(200);
var var73 varchar2(200);
var var74 varchar2(200);
var var75 varchar2(200);
var var76 varchar2(200);
var var77 varchar2(200);
var var78 varchar2(200);
var var79 varchar2(200);
var var80 varchar2(200);
var var81 varchar2(200);
exec :var1 := null ;
exec :var2 := null ;
exec :var3 := null ;
exec :var4 := null ;
exec :var5 := null ;
exec :var6 := null ;
exec :var7 := null ;
exec :var8 := null ;
exec :var9 := null ;
exec :var10 := null ;
exec :var11 := null ;
exec :var12 := null ;
exec :var13 := null ;
exec :var14 := null ;
exec :var15 := null ;
exec :var16 := null ;
exec :var17 := null ;
exec :var18 := null ;
exec :var19 := null ;
exec :var20 := null ;
exec :var21 := null ;
exec :var22 := null ;
exec :var23 := null ;
exec :var24 := null ;
exec :var25 := null ;
exec :var26 := null ;
exec :var27 := null ;
exec :var28 := null ;
exec :var29 := null ;
exec :var30 := null ;
exec :var31 := null ;
exec :var32 := null ;
exec :var33 := null ;
exec :var34 := null ;
exec :var35 := null ;
exec :var36 := null ;
exec :var37 := null ;
exec :var38 := null ;
exec :var39 := null ;
exec :var40 := null ;
exec :var41 := null ;
exec :var42 := null ;
exec :var43 := null ;
exec :var44 := null ;
exec :var45 := null ;
exec :var46 := null ;
exec :var47 := null ;
exec :var48 := null ;
exec :var49 := null ;
exec :var50 := null ;
exec :var51 := null ;
exec :var52 := null ;
exec :var53 := null ;
exec :var54 := null ;
exec :var55 := null ;
exec :var56 := null ;
exec :var57 := null ;
exec :var58 := null ;
exec :var59 := null ;
exec :var60 := null ;
exec :var61 := null ;
exec :var62 := null ;
exec :var63 := null ;
exec :var64 := null ;
exec :var65 := null ;
exec :var66 := null ;
exec :var67 := null ;
exec :var68 := null ;
exec :var69 := null ;
exec :var70 := null ;
exec :var71 := null ;
exec :var72 := null ;
exec :var73 := null ;
exec :var74 := null ;
exec :var75 := null ;
exec :var76 := null ;
exec :var77 := null ;
exec :var78 := 20 ;
exec :var79 := 20 ;
exec :var80 := null ;
exec :var81 := null ;
-- query
SELECT 
        sel.maturityDate,
        sel.schedule_id ,
        sel.scheduleId,
        sel.capitalOutstanding,
        sel.assetId,
        sel.assetModelName , 
        sel.loanId,
        proposalStatus.DETAIL                         AS proposalStatusCode,
        sel.scheduleStatus,
        assetValuation.valuation                      as schwackeValue ,
        typeId.DETAIL                                 as schwackeCodes,     
        sel.terminationDate,
        docRepositary.DETAIL                          as docRepositaryId,
        TO_DATE(CAST(CASE
                         WHEN (cancellationDate.DATEFIELD= 0)
                             THEN null
                         ELSE cancellationDate.DATEFIELD END AS NVARCHAR2(8)),  'yyyymmdd')  as cancellationDate,
         (CASE
             WHEN supplier.thirdPartyNumber = sel.dealerGPNr  THEN to_char(supplier.thirdPartyNumber)
             ELSE   '0'
            END)                                     as "supplierGPNr",
        supplier.thirdPartyNumber as SupplierThirdNumber  ,
        (CASE
             WHEN proposalStatus.DETAIL = 'RESERVED' THEN '0'
             WHEN proposalStatus.DETAIL = 'APPROVED' THEN '1'
             WHEN proposalStatus.DETAIL = 'FINANCED' THEN '2'
             WHEN proposalStatus.DETAIL = 'CANCELLED'  THEN '3'
             WHEN proposalStatus.DETAIL = 'PRECANCELLED'  THEN '3'
             WHEN proposalStatus.DETAIL = 'CREDITNOTECANCELLED'  THEN '3'
             WHEN proposalStatus.DETAIL = 'WAITING'   THEN '4'
             ELSE '5'
            END)                                   as loanState,
        productId1.DETAIL                          as productId1,
        productId2.DETAIL                          as productId2,
        productId3.DETAIL                          as productId3,
        productId4.DETAIL                          as productId4,
        productId.DETAIL                           as wmProductId,
        sel.vin,
        sel.modelName,
        sel.loanAmount,
        (CASE
             WHEN sel.capitalOutstanding IS NULL THEN 0
             WHEN sel.scheduleStatus = 'Proposal' THEN
                 (CASE
                      WHEN proposalStatus.DETAIL = 'WAITING'   THEN  0
                      ELSE   sel.capitalOutstanding * (-1)
                     END)
             ELSE   sel.capitalOutstanding * (-1)
            END)                                   as balance,
        sel.dealerGPNr,
        sel.dealerNameShort,
        TO_DATE(CAST(CASE
                         WHEN (creationDate.DATEFIELD= 0)
                             THEN null
                         ELSE creationDate.DATEFIELD END AS NVARCHAR2(8)),  'yyyymmdd')  as creationDate,
        sel.activationDate,
        sel.KBSTATE,
        assetValuationInp.narrative                as invoiceId,
        (CASE
             WHEN assetValuationInp.valuation IS NULL THEN 0
             ELSE assetValuationInp.valuation
            END)                                   as invoiceAmount,
        assetValuationInp.valueDate                as invoiceDate,
        assetUsageHistory.readingValue             as kilometers,
        installSchema.DETAIL                       as installmentSchemaId,
        installSchemaVer.DETAIL                    as installmentSchemaVersion,
        interestSchema.DETAIL                      as interestSchemaId,
        interestSchemaVer.DETAIL                   as interestSchemaVersion,
        sel.vinLast6,
        CASE
            WHEN UPPER(CONCAT(sel.submitterId, '')) IN ('<NONE>', '', 'NULL')
                THEN 0
            ELSE TO_NUMBER(sel.submitterId)
            END                                    as submitterId,
        stockId.DETAIL                             as stockId,
        deliveryLink.DETAIL                        as deliveryLink,
        TO_DATE(CAST(CASE
                         WHEN (deliveryDate.DATEFIELD= 0)
                             THEN null
                         ELSE deliveryDate.DATEFIELD END AS NVARCHAR2(8)),  'yyyymmdd')      as deliveryDate,
        agreementAlert.dunningBlock                as dunningBlock,
        odsInvoicingCompany.code                   as "brandId",
        odsInvoicingCompany.name                   as "brand",
        agrCompany.code                            as "mandantId",
        modelHSN.DETAIL                            as hsn,
        modelTSN.DETAIL                            as tsn,
        briefNumber.DETAIL                         as documentNr,
        TO_DATE(CAST(CASE WHEN (loanDocumentDate.DATEFIELD = 0) THEN null
                  ELSE loanDocumentDate.DATEFIELD  END AS NVARCHAR2(8)),  'yyyymmdd')   as documentStatusDate,
        documentStateLoan.DETAIL                   as documentStateLoan,
        loanDocumentLocation.DETAIL                as documentLocation,
        fn.finalDate 
        FROM alfaods.mv_ext_dealer_01 sel 
             inner join ( select max(finalDate) as finalDate,scheduleId  from alfaods.mv_max_fn_date fn group by scheduleId ) fn on sel.scheduleId = fn.scheduleId 
             LEFT JOIN ALFAODS.OdsThirdParty supplier on supplier.id = sel.supplierId
             LEFT JOIN ALFAODS.OdsCompany odsInvoicingCompany on odsInvoicingCompany.id = sel.invCompanyId
             LEFT JOIN ALFAODS.OdsCompany agrCompany on agrCompany.id = sel.agrCompanyId
             LEFT JOIN ALFAODS.OdsAssetValuation assetValuationInp on ( assetValuationInp.assetId = sel.assetId AND assetValuationInp.valueTypeCode = 'INP' AND assetValuationInp.isCurrentForTypeAndSource = 1 )
             LEFT JOIN ALFAODS.OdsAssetUsageHistory assetUsageHistory on sel.assetId = assetUsageHistory.assetId
             LEFT JOIN ALFAODS.OdsAgreementAlert agreementAlert on agreementAlert.agreementId = sel.agreementid
             LEFT JOIN ALFAODS.OdsAssetValuation assetValuation on ( assetValuation.assetId = sel.assetId  AND assetValuation.valueTypeCode = 'TTV' )
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos installSchema       ON installSchema.alfaScheduleIdentifier = sel.scheduleId AND installSchema.informationType = 'WINSS'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos interestSchema      ON interestSchema.alfaScheduleIdentifier = sel.scheduleId AND interestSchema.informationType = 'WINTS'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos application ON application.alfaScheduleIdentifier = sel.scheduleId AND application.informationType = 'WAPID'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos productId1 ON productId1.alfaScheduleIdentifier = sel.scheduleId AND productId1.informationType = 'WPID1' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos productId2 ON productId2.alfaScheduleIdentifier = sel.scheduleId AND productId2.informationType = 'WPID2' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos productId3 ON productId3.alfaScheduleIdentifier = sel.scheduleId AND productId3.informationType = 'WPID3' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos productId4 ON productId4.alfaScheduleIdentifier = sel.scheduleId AND productId4.informationType = 'WPID4' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos stockID ON stockID.alfaScheduleIdentifier = sel.scheduleId AND stockID.informationType = 'WSTID'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos proposalStatus ON proposalStatus.alfaScheduleIdentifier = sel.scheduleId AND proposalStatus.informationType = 'WPRST'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos creationDate ON creationDate.alfaScheduleIdentifier = sel.scheduleId AND creationDate.informationType = 'WCRDT'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos installSchemaVer      ON installSchemaVer.alfaScheduleIdentifier = sel.scheduleId AND installSchemaVer.informationType = 'WINSV'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos interestSchemaVer     ON interestSchemaVer.alfaScheduleIdentifier = sel.scheduleId AND interestSchemaVer.informationType = 'WINTV'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos cancellationDate      ON cancellationDate.alfaScheduleIdentifier = sel.scheduleId AND cancellationDate.informationType = 'WCD'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos deliveryLink          ON deliveryLink.alfaScheduleIdentifier = sel.scheduleId AND deliveryLink.informationType = 'WDLNK'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos productId ON productId.alfaScheduleIdentifier = sel.scheduleId AND productId.informationType = 'WPRID'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos deliveryDate ON deliveryDate.alfaScheduleIdentifier = sel.scheduleId AND deliveryDate.informationType = 'WDELD'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos netting ON netting.alfaScheduleIdentifier = sel.scheduleId AND netting.informationType = 'WNETT'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_info_asset modelHSN ON modelHSN.assetIdentifier = sel.assetId AND modelHSN.informationType = u'MANUN' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_info_asset modelTSN ON modelTSN.assetIdentifier = sel.assetId AND modelTSN.informationType = u'MODC' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_info_asset briefNumber ON briefNumber.assetIdentifier = sel.assetId AND briefNumber.informationType = u'BNR'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos documentStateLoan ON documentStateLoan.alfaScheduleIdentifier = sel.scheduleId AND documentStateLoan.informationType = 'WDCLS' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos loanDocumentLocation ON loanDocumentLocation.alfaScheduleIdentifier = sel.scheduleId AND loanDocumentLocation.informationType = 'WLDLC' 
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos loanDocumentDate  ON loanDocumentDate.alfaScheduleIdentifier = sel.scheduleId AND loanDocumentDate.informationType = 'WCRDT'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_miscinfos docRepositary ON docRepositary.alfaScheduleIdentifier = sel.scheduleId AND docRepositary.informationType = 'WDRID'
             LEFT JOIN ALFAODS.mv_ods_tmpcurrent_info_asset typeId ON typeId.assetIdentifier = sel.assetId AND typeId.informationType = u'WTYID'
WHERE
    (:var2  IS NULL OR productId1.DETAIL  = NVL(:var3 ,productId1.DETAIL ))
AND (:var4  IS NULL OR productId2.DETAIL  = NVL(:var5 ,productId2.DETAIL ))
AND (:var6  IS NULL OR productId3.DETAIL  = NVL(:var7 ,productId3.DETAIL ))
AND (:var8  IS NULL OR productId4.DETAIL = NVL(:var9  ,productId4.DETAIL ))
AND modelHSN.DETAIL = NVL(:var10 , modelHSN.DETAIL)
AND modelTSN.DETAIL  = NVL(:var11 , modelTSN.DETAIL )
AND briefNumber.DETAIL = NVL(:var12 ,briefNumber.DETAIL)
AND documentStateLoan.DETAIL= NVL(:var13 , documentStateLoan.DETAIL)
AND loanDocumentLocation.DETAIL = NVL(:var14 , loanDocumentLocation.DETAIL)
AND (:var15  IS NULL OR sel.vinLast6 IN (select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var17 ,''), '[^,]+', 1, level) is not NULL))
AND (:var18  IS NULL OR sel.vin IN (select regexp_substr(NVL(:var19 ,''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var20 ,''), '[^,]+', 1, level) is not NULL))
AND (:var21  IS NULL OR sel.dealerGPNr IN (select regexp_substr(NVL(:var22 ,''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var23 ,''), '[^,]+', 1, level) is not NULL))
AND (:var24  IS NULL OR supplier.thirdPartyNumber IN (select regexp_substr(NVL(:var25 ,''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var26 ,''), '[^,]+', 1, level) is not NULL))
AND (:var27  IS NULL OR sel.dealerGPNr IN ( SELECT thirdpartynumber FROM alfaods.mv_th_and_ref where reference = :var1 ))
AND (:var28  IS NULL OR UPPER(proposalStatus.DETAIL) IN (select regexp_substr(NVL(:var29 ,''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var30 ,''), '[^,]+', 1, level) is not NULL))
AND (:var31  IS NULL OR sel.loanId  IN (select regexp_substr(NVL(:var32 ,''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var33 ,''), '[^,]+', 1, level) is not NULL))
AND (:var34  IS NULL OR sel.assetModelName like '%' || :var35  || '%') 
AND (:var36  IS NULL OR assetValuationInp.narrative = :var37  OR stockId.DETAIL = :var38 )
AND (:var39  IS NULL OR productId1.DETAIL = NVL(:var40 ,productId1.DETAIL))
AND (:var41  IS NULL OR productId2.DETAIL = NVL(:var42 ,productId2.DETAIL))
AND (:var43  IS NULL OR productId3.DETAIL = NVL(:var44 ,productId3.DETAIL))
AND (:var45  IS NULL OR productId4.DETAIL = NVL(:var46 ,productId4.DETAIL))
AND ((:var47  IS NULL) OR assetValuationInp.valueDate >= TO_DATE(:var48 , 'yyyy-MM-dd'))
AND ((:var49  IS NULL) OR assetValuationInp.valueDate <= TO_DATE(:var50 , 'yyyy-MM-dd'))
AND ((:var51  IS NULL) OR sel.activationDate >= TO_DATE(:var52 , 'yyyy-MM-dd'))
AND ((:var53  IS NULL) OR sel.activationDate <= TO_DATE(:var54 , 'yyyy-MM-dd'))
AND (:var55  IS NULL OR modelHSN.DETAIL = NVL(:var56 ,modelHSN.DETAIL))
AND (:var57  IS NULL OR modelTSN.DETAIL = NVL(:var58 ,modelTSN.DETAIL))
AND (:var59  IS NULL OR briefNumber.DETAIL = NVL(:var60 ,briefNumber.DETAIL))
AND (:var61  IS NULL OR (TO_DATE(:var62 , 'yyyy-MM-dd') <= sel.Maturitydate))
AND (:var63  IS NULL OR
           (sel.scheduleStatus  IN ('Live (Primary)', 'Proposal')  AND TO_DATE(:var64 , 'yyyy-MM-dd') >= sel.maturityDate OR
            sel.scheduleStatus  IN ('Terminated', 'Matured' )      AND ADD_MONTHS(Trunc(TO_DATE(:var65 ,'yyyy-MM-dd'),'MONTH'),2) >= sel.maturityDate)
    )
AND (:var66  IS NULL OR documentStateLoan.DETAIL = NVL(:var67 ,documentStateLoan.DETAIL))
AND (:var68  IS NULL OR loanDocumentLocation.DETAIL = NVL(:var69 ,loanDocumentLocation.DETAIL))

AND ( sel.scheduleStatus IN ('Live (Primary)', 'Proposal') 
      OR 
      ( 
       sel.scheduleStatus in ('Terminated', 'Matured') 
       and 
       TO_DATE(CAST(CASE WHEN (cancellationDate.DATEFIELD= 0) THEN null ELSE cancellationDate.DATEFIELD END AS NVARCHAR2(8)),  'yyyymmdd') 
       BETWEEN TO_DATE(NVL(:var80 , '1900-01-01'), 'yyyy-MM-dd') AND TO_DATE(NVL(:var81 ,'9999-12-31'), 'yyyy-MM-dd') OR cancellationDate.DATEFIELD is null
      )
    )
ORDER BY
        CASE WHEN UPPER(:var70 ) = 'LOANID' AND UPPER(:var71 ) = 'ASC' THEN sel.loanId END ASC ,
        CASE WHEN UPPER(:var72 ) = 'LOANID' AND UPPER(:var73 ) <> 'ASC' THEN sel.loanId END DESC,
        CASE WHEN UPPER(:var74 ) <> 'LOANID' AND UPPER(:var75 ) = 'ASC' THEN sel.dealerGPNr END ASC,
        CASE WHEN UPPER(:var76 ) <> 'LOANID' AND UPPER(:var77 ) <> 'ASC' THEN sel.dealerGPNr END DESC
        OFFSET :var78  ROWS FETCH NEXT :var79  ROWS ONLY 
;

AND (:var15  IS NULL OR sel.vinLast6 IN (select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var17 ,''), '[^,]+', 1, level) is not NULL))
                                                                                                       *
ERROR at line 138:
ORA-32359: cannot specify the FRESH_MV hint for this query

I have been suffered a lot to make work the RTMV ( I had so many problems with enabling ON QUERY COMPUTATION ). Is there a way to use the hint FRESH_MV with any of those ?

Is there a way to rewrite this condition without using any of the apparent incompatible functions ?

AND (:var15  IS NULL OR sel.vinLast6 IN (select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual connect by regexp_substr(NVL(:var17 ,''), '[^,]+', 1, level) is not NULL))

Solution

  • That CONNECT BY mechanism is a means to convert a comma delimited string into rows, eg

    SQL> variable var16 varchar2(100)
    SQL> exec :var16 := 'SMITH,BLAKE'
    
    PL/SQL procedure successfully completed.
    
    SQL> select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual
      2  connect by regexp_substr(NVL(:var16 ,''), '[^,]+', 1, level) is not NULL;
    
    REGEXP_SUBSTR(NVL(:VAR16,''),'[^,]+',1,LEVEL)
    -------------------------------------------------------------------------------
    SMITH
    BLAKE
    

    and thus when used in a surrounding query

    SQL> create table t ( x varchar2(10));
    
    Table created.
    
    SQL> set feedback off
    SQL> insert into t values ('SMITH');
    SQL> insert into t values ('ALLEN');
    SQL> insert into t values ('WARD');
    SQL> insert into t values ('JONES');
    SQL> insert into t values ('MARTIN');
    SQL> insert into t values ('BLAKE');
    SQL> insert into t values ('CLARK');
    SQL> insert into t values ('SCOTT');
    SQL> insert into t values ('KING');
    SQL> insert into t values ('TURNER');
    SQL> insert into t values ('ADAMS');
    SQL> insert into t values ('JAMES');
    SQL> insert into t values ('FORD');
    SQL> insert into t values ('MILLER');
    SQL> set feedback on
    SQL>
    SQL> variable var16 varchar2(100)
    SQL> exec :var16 := 'SMITH,BLAKE'
    
    PL/SQL procedure successfully completed.
    
    SQL> select *
      2  from t
      3  where x in ( select regexp_substr(NVL(:var16 , ''),'[^,]+', 1, level) from dual
      4               connect by regexp_substr(NVL(:var16 ,''), '[^,]+', 1, level) is not NULL );
    
    X
    ----------
    SMITH
    BLAKE
    
    2 rows selected.
    

    You can emulate that by just looking for the column to be contained within the input string (and adding leading and trailing commas).

    SQL> select *
      2  from t
      3  where instr(','||:var16||',',','||x||',') > 0;
    
    X
    ----------
    SMITH
    BLAKE
    

    or similarly with LIKE