Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to pass REGEXP_SUBSTR and match_parameters to dynamic SQL

Youssef_B_82Jul 17 2019 — edited Jul 18 2019

I am trying to pass REGEXP_SUBSTR with match_parameters to a dynamic sql but it doesn't seem to work as expected.

Here's an example

if I run

SELECT INSTR(REGEXP_SUBSTR(&PROMPT, '^(.*\s+)?HLD(\s+.*)?$'),'HLD')  FROM DUAL;

The query works perfectly

but when I compile a package to generate a dynamic SQL and I include the match_parameters they don't seem to work.

The dynamic SQL where clause looks like this

create or replace package body MY_PK is

function.....

begin....

execute immediate ..;

l_sqltext := l_sqltext || '

        SELECT *

FROM....

WHERE...

OR CASE WHEN ''HLD'' IN ('||CASE WHEN INSTR(REGEXP_SUBSTR(SHELF, '^(.*\s+)?HLD(\s+.*)?$'),'HLD') = 0 THEN 'NULL' ELSE '''HLD''' END ||') THEN abs(hlds) ELSE -1 END > 0

...';

Any advice?

Thanks

Youssef

Comments
Post Details
Added on Jul 17 2019
6 comments
970 views