您的位置:首页 > 数据库 > Oracle

oracle 授予存储过程创表权限

2016-07-19 11:16 344 查看
数据库当前用户授予了connect、resource权限,在存储过程里面执行execute immediate 'create table XX'时会报“权限不足”的错误。此时觉得很奇怪,resource角色是具有create table的权限的,为什么在存储过程里面创建表就权限不足了。

 

    查了资料,原因为:用户拥有的角色role在存储过程里面不可用。 一般有如下两种解决方法:

 

    1.显示的给当前用户授权:grant create table to user;

 

    但是如果存储过程里面如果需要用到其他的权限,那也要显示授予,这种方式就比较麻烦了。

 

     2.创建存错过程的时候加上 authid current_user,如:create or replace procedure xx authid current_user is;

 

     如此,存储过程中就可以用到当前用户具有的角色的权限了。相对于第一种方式来说,这种方法比较方便易用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: