Authid Current_User的使用-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

Authid Current_User的使用

简介: Authid Current_User  的使用 在开发过程中,会遇到用户拥有的role权限在存储过程中是不可用的,遇到这种情况,经常采用一般需要显示授权,如:grant create table to user  grant truncate table to user ;这种方式是可以解决问题,当时很繁琐,有可能会执行N多grant才能执行存储过程,然后oracle很智能的提供了在存储过程中使用用户role权限的方法,在存储过程中添加 Authid Current_User,这样做相当于给调用者授权。

Authid Current_User  的使用

在开发过程中,会遇到用户拥有的role权限在存储过程中是不可用的,遇到这种情况,经常采用一般需要显示授权,如:grant create table to user  grant truncate table to user ;这种方式是可以解决问题,当时很繁琐,有可能会执行N多grant才能执行存储过程,然后oracle很智能的提供了在存储过程中使用用户role权限的方法,在存储过程中添加

Authid Current_User,这样做相当于给调用者授权。以下为相关的example


SYS@ orcl >select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SYS@ orcl >conn test/test
Connected.
TEST@ orcl >create or replace procedure p_test
  2  as
  3  begin
  4  execute immediate'create table t(a number)';
  5  end;
  6  /

Procedure created.
TEST@ orcl >exec  p_test;
BEGIN p_test; END;

*
ERROR at line 1:
ORA-01031: 权限不足
ORA-06512: 在 "TEST.P_TEST", line 4
ORA-06512: 在 line 1

--下面一步查看该用户的role,可以看到拥有dba权限,但是却不能被存储中的execute使用,所以报错
TEST@ orcl >select * from dba_role_privs where grantee='TEST';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
TEST                           DBA                            NO  YES

--修改存储过程,添加Authid Current_User
TEST@ orcl >create or replace procedure p_test
  2  Authid Current_User
  3  as
  4  begin
  5  execute immediate'create table t(a number)';
  6  end;
  7  /

Procedure created.

TEST@ orcl >exec  p_test;

PL/SQL procedure successfully completed.
--可以看到t表已经创建成功
TEST@ orcl >select * from t;

no rows selected

总结:在存储过程中存在这样的问题,都应该使用Authid Current_User,要不然只能显示的进行授权,不方便管理不说,且开发的时候可能会很复杂。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章