我有一个例程,其任务是从 ALL_SOURCE 中提取代码。这是使用以下光标完成的:
CURSOR w_cur ( p_name VARCHAR2 , p_type VARCHAR2) IS
SELECT text , line
FROM ALL_SOURCE
WHERE UPPER(TYPE) = UPPER(p_type)
AND UPPER(NAME) = UPPER(p_name)
AND UPPER(OWNER) = UPPER(NVL(G_Owner_to_User,USER))
ORDER BY line
;
我正在从具有 DBA 和 SYS 权限的用户执行此例程。尝试提取“PACKAGE”的“BODY”时,如果该包属于运行该程序的同一用户,我会得到正确的结果。另一方面,如果我尝试提取属于另一个用户的包的“BODY”,我会得到一个空结果。
有趣的是,当从 SQL DEVELOPER(同一用户)中运行上述“SELECT”时,我确实得到了预期的代码。
这看起来像是与“特权”相关的事情,但我不知道为什么我会得到不同的结果以及缺少哪个特权。
感谢您的意见。
费尔南多。