为什么在 DBA_PROCEDURES 中找不到 LNNVL

Pie*_*aud 0 oracle

LNNVL 存在,因为以下语句有效。

 select 1 from dual where not(LNNVL(1=1));
Run Code Online (Sandbox Code Playgroud)

但我在 DBA_PROCEDURE 中找不到它

SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'LNNVL';
Run Code Online (Sandbox Code Playgroud)

无效的

这是一个内置过程,但也是 REGXXP_LIKE,以下查询返回一行

 SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'REGEXP_LIKE';
Run Code Online (Sandbox Code Playgroud)

Ale*_*ole 5

视图regexp_like中的dba_procedures是包中的版本STANDARD

本质上这意味着它可以在 PL/SQL 中使用;所以你可以这样做:

bool_var := regexp_like(...);
Run Code Online (Sandbox Code Playgroud)

但你不能这样做:

bool_var := lnnvl(...);
Run Code Online (Sandbox Code Playgroud)

该字典视图与 SQL 中可用的内置函数无关,而与 PL/SQL 中可用的内置函数无关。并非所有内置函数都在 PL/SQL 中可用,因此它们不会全部复制到STANDARD包中 - 您可以使用相同的字典视图或describe standard查看该包中定义的内容。