我正在尝试编写一个程序,它将打印PL / SQL文件中所有函数名列表以及每个函数的后续函数调用。
例如 -
FUNCTION Fn_ABC (field_status IN VARCHAR)
BEGIN
Dbg('In Fn_ABC ');
IF NOT Fn_xyz(field_status) THEN
Dbg('Failed in Fn_ABC');
field_status := 'T';
RETURN FALSE;
END IF;
END Fn_ABC;
在上述文件上运行所需代码的输出应为:
Fn_ABC
Fn_xyz
深度优先遍历每个函数似乎是合乎逻辑的选择,但我对如何运行它以获取每个函数名称感到困惑。
答案 0 :(得分:1)
无需遍历.sql文件。在数据库中创建函数后,只需运行此查询即可获得函数所依赖的所有函数。
SELECT NAME, REFERENCED_NAME
FROM ALL_DEPENDENCIES
WHERE NAME = 'FN_ABC' AND TYPE = 'FUNCTION' AND REFERENCED_TYPE = 'FUNCTION';