I looked at the validation and it looked perfectly OK.
ORA-01403: no data found Error ERR-1025 Error processing PLSQL expression. “one of the validation expressions”
The syntax error is the semicolon after the function call (the result of a copy and paste).
:p1_item in (4, pgk.func;)
The behaviour was tested in two environments:
ORA-01403: no data found Error ERR-1025 Error processing PLSQL expression. “validation 4 expression”
Both databases raised an error:
declare curid NUMBER; begin curid := DBMS_SQL.OPEN_CURSOR; -- Parse SQL cursor number: DBMS_SQL.PARSE(curid, 'begin /* condition */ if :p2_f1 is not null then /* validation */ if to_number(:p2_f1) in (4, pkg.func;) then null; else null; end if; end if; end;', DBMS_SQL.NATIVE); end;
A couple of questions are in order here:
ORA-06550: line 1, column 103: PLS-00103: Encountered the symbol ";" when expecting one of the following: . ( ) , * @ % & | = - + < / > at in is mod remainder not range rem => .. <> or != or ~= >= <= <> and or like between || multiset member SUBMULTISET_ The symbol ";" was ignored. 1. declare 2. curid NUMBER; 3. begin