一個使用者執行另外一個使用者的過程查詢的是哪個使用者下的物件

zhangsharp20發表於2016-04-25
A使用者的過程如下:

create or replace procedure ss
as
v_ename varchar(30);
begin
 select ut.ename into v_ename from emp ut where rownum=1;
 dbms_output.put_line(v_ename);
end;


在A使用者下執行此過程

SQL> set serveroutput on 
SQL> exec ss;


SMITH


PL/SQL procedure successfully completed

用system新建一個測試使用者

SQL> create user j1_test identified by oracle;


User created

賦予此使用者執行儲存過程ss的許可權

SQL> grant execute on scott.ss to j1_test;


Grant succeeded


SQL> grant connect,resource to j1_test;


Grant succeeded

建立一個與scott使用者相同名稱的表

SQL> create table j1_test.emp as select * from scott.emp where 1=2;


Table created

SQL> insert into j1_test.emp select * from scott.emp where ename <>'SMITH';


13 rows inserted
SQL> commit;

Commit complete

過濾掉SMITH的資料

在測試使用者下執行儲存過程ss

SQL> exec scott.ss;


SMITH


PL/SQL procedure successfully completed

可以發現輸出結果仍然是smith,由此可見,對於不加schema的表,別的使用者都是在查詢儲存過程所屬物件的表


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-2087852/,如需轉載,請註明出處,否則將追究法律責任。

相關文章