Oracle:Authid Current_User使用
由于用户拥有的role权限在存储过程是不可用的。遇到这种情况,我们一般需要显示授权,如grant create table to user;但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程,实际上,oracle给我们提供了在存储过程中使用role权限的方法:修改存储过程,加入Authid Current_User时存储过程可以使用role权限。
下面以例子说明:
----执行存储过程p_create_emp2报下面的错误:
SQL> exec p_create_emp2; begin p_create_emp2; end; ORA-01031: 权限不足
ORA-06512: 在 "ECHO.P_CREATE_EMP2", line 12
ORA-06512: 在 line 2 ----查看p_create_emp2,该存储过程是要创建emp2表
create or replace procedure P_create_emp2 as
cursor t_cursor is
select * from user_tables where table_name = 'EMP2';
t_cur t_cursor%rowtype;
num int:=0;
begin
for t_cur in t_cursor loop
num:=num+1;
end loop;
if num=1 then
execute immediate 'drop table emp2 purge';
execute immediate 'create table emp2 as select * from emp';
else
execute immediate 'create table emp2 as select * from emp';
end if;
end P_create_emp2; ----查看echo用户的角色或权限
SQL> select * from dba_role_privs where grantee='ECHO'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
ECHO DBA NO YES
----有dba的角色,说明建表的权限 ----修改存储过程p_create_emp2:
create or replace procedure P_create_emp2 authid current_user as
cursor t_cursor is
select * from user_tables where table_name = 'EMP2';
t_cur t_cursor%rowtype;
num int:=0;
begin
for t_cur in t_cursor loop
num:=num+1;
end loop;
if num=1 then
execute immediate 'drop table emp2 purge';
execute immediate 'create table emp2 as select * from emp';
else
execute immediate 'create table emp2 as select * from emp';
end if;
end P_create_emp2; ----再次执行:
SQL> exec p_create_emp2; PL/SQL procedure successfully completed SQL> desc emp2;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y ----在存储过程加了Authid Current_User选项,表创建成功。
Oracle:Authid Current_User使用的更多相关文章
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...
- (转+整理) oracle authid definer 与 authid current_user
转:http://blog.csdn.net/indexman/article/details/17067531 http://blog.csdn.net/liqfyiyi/article/detai ...
- Oracle:Authid Current_User的使用
我们知道,用户拥有的role权限在存储过程是不可用的.遇到这种情况,我们一般需要显式授权,如grant create table to usera;但这种方法太麻烦,有时候可能需要进行非常多的授权才能 ...
- Oracle之AUTHID CURRENT_USER
没有AUTHID CURRENT_USER表示定义者权限(definer rights),以定义者身份执行: 加上AUTHID CURRENT_USER表示调用者权限(invoker rights), ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- 重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- Oracle 行转列(不固定行数的行转列,动态)(转)
http://bbs.csdn.net/topics/330039676 SQLSERVER :行列转换例子: http://www.cnblogs.com/gaizai/p/3753296.htm ...
- ORACLE 自动增长通过封装函数,方便调用
好的编程习惯,是一个很有必要的过程.好的编程习惯,可以因人而异,但是简单地.基本地代码级别的就那些:写注释.合理的缩进.换行.变量命名等. 对我们程序员来说,大部分时间都对着电脑,在对着电脑的大部分时 ...
随机推荐
- 8、JavaScript深入浅出——数据类型
一.六种数据类型 Javascript是弱类型. 五种原始类型和一种对象类型: number String boolean null undefined Object 二.隐式转换 +与-的运算举例: ...
- Java 收集的代码 transient
public class Main { public static void main(String[] args) { ((NULL)null).haha(); } } class NULL { p ...
- SQL Server 2008 Express 安装或卸载时提示“重启计算机失败"的解决办法
安装或卸载SQL Server 遇到错误提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机.如下图: 解决办法: 1.在开始->运行中输入regedi ...
- C#线程系列讲座(3):线程池和文件下载服务器
如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源.为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好 ...
- UI进阶之--网易彩票手写plist文件,动态创建控制器与tableViewcell
点击右上角设置按钮 点击按钮后发生的事件:1. 控制器的跳转,进入新的控制器.view, 2. 跳转的时候对将要跳转的目标控制的子控件进行了布局.---通过手写plist文件的方式加载 为按钮注册单击 ...
- OTG 接口烧写最小Linux的方法
通过该方式可以烧写Android4.0.3 系统和Linux-QT 系统. 需要准备一根OTG 线,绝大多数智能手机和PC 机相连接的线都是OTG线,都是通用的. 这种方式比TF卡烧写方式要快一些,我 ...
- jquery-mockjax初试
1. 原理 jquery-mockjax是用于mock 前台ajax向后台请求的返回数据. 原理很简单 在你js代码要发送ajax请求的地方断点一下,然后比较在[引入jquery-mockjax] 和 ...
- Oracle RAC inventory.xml损坏后如何修复
不建议直接修改该文件 1.从其它节点拷贝一份 2.使用runInstaller工具(这个工具位于<GI_HOME>/oui/bin路径下)重建inventory.xml文件 步骤1:添加G ...
- Troubleshooting JDK
收集整理下JDK自带的关于 Troubleshooting 的文档 Java 2 Platform, Standard Edition 5.0 Troubleshooting and Diagnost ...
- M面经prepare: Shuffle a deck
设计一个shuffle card 用了java. Random Class package Random; import java.util.*; public class Solution { st ...