今天在用户wzsb下创建存储过程,存储过程中需要对tpsi用户下的表中的数据进行DML操作,但是在编译的时候始终出错,报错为:表或试图不存在。
随后在sqlplus下使用wzsb用户去操作tpsi用户下的表,是能正常访问的,而且wzsb具有dba权限的,这是什么原因造成的呢。随后百度一下,在一遍介绍存储过程的文章中提到,对于存储过程中操作其他用户的数据,需要这个用户显示的赋操作权限。
我在tpsi用户下,grant insert on t_name to wzsb。然后再次编译OK了。为了简单起见,将其他权限也赋上,直接上wzsb可以操作tpsi下所有表:
grant select any table to wzsb;
grant insert any table to wzsb;
grant update any table to wzsb;
grant delete any table to wzsb;
这样问题解决。记录一下,在存储过程中,操作其他用户数据,虽说有dba权限还是不够的,需要显示的赋予相关权限。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22418990/viewspace-717479/
,如需转载,请注明出处,否则将追究法律责任。