oracle在存储过程中执行DDL语句
2011-12-21 09:19
597 查看
昨晚同事问如何在存储过程中执行DDL语句,整理一下:
默认情况下,oracle对存储过程是使用所有者权限,也就是说:如果用户B条用A 用户下的存储过程,使用的是A用户的对象权限和系统权限。如果A用户没有权限的话,用户B执 行就会报错。
所以第一种办法就是授予用户执行存储过程中DDL的权限。
另一种办法是通过在存储过程中使用authid Current_user来讲存储过程转化为调用者权限。这样每次调用存储过程,都是动态根据调用者的权限构成去判定是否有权限。
默认情况下,oracle对存储过程是使用所有者权限,也就是说:如果用户B条用A 用户下的存储过程,使用的是A用户的对象权限和系统权限。如果A用户没有权限的话,用户B执 行就会报错。
所以第一种办法就是授予用户执行存储过程中DDL的权限。
另一种办法是通过在存储过程中使用authid Current_user来讲存储过程转化为调用者权限。这样每次调用存储过程,都是动态根据调用者的权限构成去判定是否有权限。
eg: create or replace procedure P_TEST Authid Current_User is begin execute immediate 'create table t (id number)'; end P_TEST; /
相关文章推荐
- 执行oracle中的job报错:ORA-12011:无法执行作业1存储过程执行DDL语句提示ORA-01031错误:权限不足
- oracle执行存储过程语句
- [PL/SQL] oracle sql语句 存储过程执行慢,单独执行快
- oracle 执行包含update语句的存储过程并获取结果记录
- oracle存储过程中如何执行动态SQL语句
- Oracle采用存储过程执行sql语句,将查询到的数据导出到EXCEL中
- 序列定时重置时,存储过程中涉及到DDL语句,执行报错:无法执行作业1
- 在存储过程中执行3种oracle循环语句
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Oracle 存储过程中的DDL语句
- oracle 存储过程执行可输入sql语句并返回结果集
- oracle 解除 sql语句、存储过程在执行中造成的锁
- 在存储过程中执行3种oracle循环语句
- 在存储过程中执行3种oracle循环语句
- Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- oracle存储过程中如何执行动态SQL语句
- oracle 解除 sql语句、存储过程在执行中造成的锁