ALL_TAB_PRIVS从包上下文

时间:2017-03-02 17:45:29

标签: oracle12c grant

我尝试使用视图ALL_TAB_PRIVS来确定某个特定用户的表是否存在某个授权。查询视图本身可以按预期工作,但是当我从包中的过程查询它时,它会错过一个被授予者。 这是我使用的代码段:

declare
    procedure foo is
    begin
        for s in (select * from all_tab_privs p
                where p.table_schema = 'B' and p.table_name = 'TABLE_NAME') loop
            dbms_output.put_line(s.grantee);
        end loop;    
    end;
begin
    tester.foo;
    dbms_output.put_line('--');
    foo;
end;

我从架构A运行此代码,并且我想检查架构C是否在架构SELECT中的表TABLE_NAME上具有B授权。 TESTER是架构A中的一个程序包,其程序foo与程序代码段中的免费程序完全相同。但是输出是:

A
--
A
C

因此,打包的程序缺少C的授权。这怎么可能?视图的构建方式会有所不同,具体取决于它的调用位置吗?我查看了文档,但无法找到解释原因的原因。

0 个答案:

没有答案