gpt4 book ai didi

sql - Oracle db View /系统表以检查包的给定部分是过程还是函数

转载 作者:行者123 更新时间:2023-12-04 06:57:45 25 4
gpt4 key购买 nike

我正在使用 Oracle system tables获取有关我们数据库中包的一些元数据。

这是我的查询之一:

select AP.PROCEDURE_NAME
from ALL_PROCEDURES ap
where ap.object_name = :object_name
and ap.owner=:owner
and ap.procedure_name is not NULL
and ap.procedure_name like :procedure_name

我还想知道给定的对象是函数、过程还是类型。我似乎找不到直接从表中提取数据的直接方法。

请注意:我不想从 all_sources 解析它。

最佳答案

事实证明,有一个 View all_arguments,您可以在其中获取包中方法的所有参数。当方法是一个函数时,有一个参数为空名称表示返回值。因此,如果您针对 all_arguments 加入,您可以确定给定的 all_procedures 条目是函数还是过程。下面是一个显示这种选择的示例。

select CASE (Select count(*) from ALL_ARGUMENTS aa 
where aa.object_name=ap.procedure_name
and aa.object_id = ap.object_id
and argument_name is null)
WHEN 1 THEN 'FUNCTION'
WHEN 0 THEN 'PROCEDURE'
ELSE ''
END as is_function, ap.*
from all_procedures ap
where ap.object_name like '<package name>'

关于sql - Oracle db View /系统表以检查包的给定部分是过程还是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com