我现在的需求是这样的:
现在我有一个数据库实例:
里面有n个用户(各个用户都不能访问其他用户的数据),各个用户具有相同的数据库表结构(例如都有test表,且表结构完全一样)
但各个用户可以在表中存放不同的数据(也就是结构一致,内容不同),现在有一个管理用户,管理用户能操作所有其他用户下的数据。现在要实现这样:管理员用户创建一个公共的存储过程,可供所有的用户共同使用,但是各个用户在执行这条存储过程时只操作执行这个存储过程的用户自己的数据,而不影响到其他用户的数据例如管理员用户创建这样一个存储过程:
create or replace procedure gettest( p_cursor in out types.mytype)
  as
  begin
 open p_cursor for select name,gender,major,age from test order by id;
end;
各个用户执行的时候只返回他自己 test表里的结果集
请问怎么能实现?

解决方案 »

  1.   

    修改一下题目:
    我现在的需求是这样的: 
    现在我有n个数据库,分布在不同的数据服务器上,每个数据库有一个用户(各个用户都不能访问其他用户的数据),各个用户具有相同的数据库表结构(例如都有test表,且表结构完全一样) 
    但各个用户可以在表中存放不同的数据(也就是结构一致,内容不同),现在有一个管理用户,能够管理所有的数据库。
    现在要实现这样:管理员用户创建一个公共的存储过程,可供所有的用户共同使用,但是各个用户在执行这条存储过程时只操作执行这个存储过程的用户自己的数据(也就是自己库下的数据),而不影响到其他用户的数据 例如管理员用户创建这样一个存储过程: 
    create or replace procedure gettest( p_cursor in out types.mytype) 
      as 
      begin 
     open p_cursor for select name,gender,major,age from test order by id; 
    end; 
    各个用户执行的时候只返回他自己 test表里的结果集 
    请问怎么能实现?
      

  2.   

    在存储过程中访问DATALINK时前面加上用户名
    USERNAME.DATALINKNAME