user1中建的过程,在user2中执行,如何让它此时只处理user2中的数据 为什么user2登录会处理user1表的数据呢?不可能吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么user2登录会处理user1表的数据呢?不可能吧,你是不是说反了 create procedure p_test() AUTHID CURRENT_USER is .... 如果用户B要执行A用户的某存储过程,传统的解决方案是:A用户将此存储过程的执行权限赋予B用户:grant execute on p_test to B; 在B用户下创建一个同义词:create synonym p_test for a.p_test; 然后B用户就可以直接执行p_test了.但是,如果使用 Authid Current_User 选项,在创建时给调用者授权,就简单多了!SQL> create or replace procedure p_test 2 Authid Current_User 3 is 4 begin 5 execute immediate 'create table creat_table(id number)'; 6 end; 7 /--至于你说的执行当前用户表里面的数据,你可以在传递参数时不明确指定是那张表,--只是用变量代替,如:create or replace procedure pro_test(table_name in varchar2(20))authid current_userisbegin select * from table_name;end pro_test; 似乎仍没有解决问题授权还好,大不了,我grant授权就是了但是我看了你下面的语句,发现,你把表当参数传入了,也就是说,对于我们这些复杂的己写好的过程,我们需要重写,改成动态的,这就麻烦好多了,改动太大了,且如果我里面要处理50张表的话,那么,我要带的参数肯定超过50了,这几乎不可能这样做。所以期望大家给出更好的解决方法。在线等待!感谢啦! 我测了下,在不同用户中执行时,它:SQL> exec p_test; begin p_test; end; ORA-06550: 第 2 行, 第 7 列: PLS-00201: 必须声明标识符 'P_TEST'ORA-06550: 第 2 行, 第 7 列: PL/SQL: Statement ignored看来这个 AUTHID CURRENT_USER 还是有限制。多谢! 你要把这个过程的执行权限授给这个用户,执行的时候exec 原用户.过程,加AUTHID CURRENT_USER 后,处理的执行用户下的表,不加AUTHID CURRENT_USER时处理的是原创建过程用户下的表 oracle日志文件问题,望各位大侠速来指点,小弟感激不尽。 请问为什么 OracleOraDb10g_home1TNSListener 停止后,pl/sql等还是可以连接操作数据库? 求Oracle数据库入门书 BI Beans连接时提示找不到metadata??? 关于oracle的select语句 8.0.5的数据如何导入到9i中 oo4o是什么? 关于触发器的用法 Ora-00366 error occurs when running a long batch 求一复杂SQL语句,欢迎高手指教(100分) oracle传参单引号的问题! 碰到一个比较棘手的问题,动态sql超过32K
如果用户B要执行A用户的某存储过程,传统的解决方案是:
A用户将此存储过程的执行权限赋予B用户:
grant execute on p_test to B;
在B用户下创建一个同义词:
create synonym p_test for a.p_test;
然后B用户就可以直接执行p_test了.
但是,如果使用 Authid Current_User 选项,在创建时给调用者授权,就简单多了!
SQL> create or replace procedure p_test
2 Authid Current_User
3 is
4 begin
5 execute immediate 'create table creat_table(id number)';
6 end;
7 /
--至于你说的执行当前用户表里面的数据,你可以在传递参数时不明确指定是那张表,
--只是用变量代替,如:
create or replace procedure pro_test(table_name in varchar2(20))
authid current_user
is
begin
select * from table_name;
end pro_test;
这几乎不可能这样做。所以期望大家给出更好的解决方法。在线等待!
感谢啦!
SQL> exec p_test;
begin p_test; end;
ORA-06550: 第 2 行, 第 7 列:
PLS-00201: 必须声明标识符 'P_TEST'
ORA-06550: 第 2 行, 第 7 列:
PL/SQL: Statement ignored看来这个 AUTHID CURRENT_USER 还是有限制。多谢!