如何用SELECT查询Oracle SQL内置函数(如count、avg、sum)及其参数?
查询Oracle SQL内置函数(如COUNT、SUM)及其参数的正确方法
Oracle的SQL内置聚合函数(如COUNT、SUM)并不存储在all_procedures或all_arguments这类视图中——这些视图主要记录用户自定义PL/SQL对象、Oracle PL/SQL包(比如STANDARD包)中的程序单元,而SQL层面的内置函数属于数据库核心SQL引擎的一部分,需要通过专门的系统视图查询。
正确查询语句
使用v$sqlfn_metadata视图可以直接获取SQL内置函数的名称、参数类型和返回类型:
SELECT name, argument_types, return_type FROM v$sqlfn_metadata WHERE name IN ('SUM', 'COUNT') ORDER BY name;
name:函数名称argument_types:参数类型列表(逗号分隔,*表示可变参数或兼容任意类型)return_type:函数返回类型
如果要查看所有SQL内置函数,直接去掉WHERE条件即可:
SELECT name, argument_types, return_type FROM v$sqlfn_metadata ORDER BY name;
为什么之前的语句无效
all_procedures中object_name='STANDARD'对应的是PL/SQL的STANDARD包,里面是PL/SQL内置函数(比如UPPER、LOWER这类同时支持PL/SQL的函数),但SUM、COUNT这类纯SQL聚合函数不在其中。- 直接查询
procedure_name like 'SUM'找不到结果,因为SUM不属于存储过程/PL/SQL函数范畴,不在all_procedures的记录里。 all_arguments同样只记录PL/SQL程序单元的参数,无法获取SQL内置函数的参数信息。
内容的提问来源于stack exchange,提问作者Andrea Meleková
相关产品推荐
相关产品推荐

