我不确定这个问题是否有意义。但想到这里问这个。
假设我有以下程序,
CREATE OR REPLACE
PROCEDURE PROCEDURE1 AS
BEGIN
SELECT COLA INTO COL **Payment**.TAB1 ;
SELECT COLA INTO COL **Checkout**.TAB1 ;
END PROCEDURE1;
在上面的代码中。 proc在模式“Order”中存在,因为您可以看到此proc正在使用Payment和Checkout的数据。所以付款和结账是不同的架构。
我的问题是,
有没有办法识别以获取程序或包中使用的模式列表?
请帮忙。
答案 0 :(得分:1)
假设我们有这个程序:
create procedure my_proc
is
l_cursor sys_refcursor;
begin
open l_cursor for select * from all_objects;
close l_cursor;
open l_cursor for select * from all_tables;
close l_cursor;
open l_cursor for select * from user_objects;
close l_cursor;
open l_cursor for select * from user_tables;
close l_cursor;
end my_proc;
因此可以像这样找到隐式和显式引用:
select NAME, referenced_name, referenced_type, referenced_owner from all_dependencies
where name = 'MY_PROC'
NAME REFERENCED_NAME REFERENCED_TYPE REFERENCED_OWNER
-------------------------------------------------------------------------
MY_PROC STANDARD PACKAGE SYS
MY_PROC USER_TABLES SYNONYM PUBLIC
MY_PROC USER_OBJECTS SYNONYM PUBLIC
MY_PROC ALL_TABLES SYNONYM PUBLIC
MY_PROC ALL_OBJECTS SYNONYM PUBLIC
MY_PROC SYS_STUB_FOR_PURITY_ANALYSIS PACKAGE SYS
因此REFERENCED_OWNER是作为对象所有者的架构。