Home > OS >  Why can't I find LNNVL in DBA_PROCEDURES
Why can't I find LNNVL in DBA_PROCEDURES

Time:07-13

LNNVL exists, because the following statement works.

 select 1 from dual where not(LNNVL(1=1));

But I can't find it in DBA_PROCEDURE

SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'LNNVL';

NULL

It's a built-in procedure but REGXXP_LIKE too and the following query return a line

 SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'REGEXP_LIKE';

CodePudding user response:

The regexp_like in the dba_procedures view is the version in the STANDARD package.

Essentially that means that it's available in PL/SQL; so you can do:

bool_var := regexp_like(...);

But you can't do:

bool_var := lnnvl(...);

That dictionary view is nothing to do with the built-in functions available from SQL, only those available in PL/SQL. Not all built-in functions are available in PL/SQL, so they aren't all replicated in the STANDARD package - you can use that same dictionary view or describe standard to see what is defined in that package.

  • Related