ITPub博客

首页 > 数据库 > Oracle > 一个用户执行另外一个用户的过程查询的是哪个用户下的对象

一个用户执行另外一个用户的过程查询的是哪个用户下的对象

原创 Oracle 作者:zhangsharp20 时间:2016-04-25 14:11:37 0 删除 编辑
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博客 ” ,链接:https://blog.itpub.net/29802484/viewspace-2087852/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 华为存储多路径
请登录后发表评论 登录
全部评论

注册时间:2014-08-12

  • 博文量
    382
  • 访问量
    801409