/* 99.SQL$
<HUG - 110426.1 By: Jim>
1.任务:将userA所有的table(或view等)的select权限(或insert等)授权给userB
2.基本思想: 以usera登录.将select 'grant insert on '||table_name ||' to userb;' from user_objects ;生成的所有SQL语句执行。
</HUG - 110426.1 By: Jim>
<TEST>
set serveroutput on
declare
p_owner varchar2;
p_obj_type varchar2;
begin
p_owner := 'japp';
p_obj_type := 'table';
grant_objects(p_owner,p_obj_type);
end;
/
set serveroutput off
</TEST>
*/
create or replace procedure grant_objects(
p_owner varchar2, -- 引用者,即 SCHEMA
p_obj_type varchar2 -- 对象类型:'TABLE','VIEW','PROCEDURE','FUNCTION'
) as
str_sql varchar2(1000);
in_count number default 0;
begin
for grant_ob_value in (select OBJECT_NAME from user_objects where OBJECT_TYPE in(upper(p_obj_type)))
loop
if 'TABLE' = upper(p_obj_type) then
str_sql := 'grant DELETE,SELECT,INSERT,UPDATE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'VIEW' = upper(p_obj_type) then
str_sql := 'grant SELECT on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'PROCEDURE' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'FUNCTION' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'FUNCTION' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
end if;
--select count(1) into in_count from DBA_TAB_PRIVS D where D.GRANTEE = upper(p_owner) and D.TABLE_NAME = grant_ob_value.OBJECT_NAME;
begin
IF in_count = 0 THEN
dbms_output.put_line(str_sql);
execute immediate str_sql;
END IF;
exception
--When Others Then Null;
when OTHERS Then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
分享到:
相关推荐
ORACLE数据库需要授权部分数据表给某个用户,而不是全数据库授权给用户。则可以根据附件内容进行操作。
Oracle数据库(表空间、用户、授权、存储过程、触发器)
oracle一个创建用户,创建表空间、授权、剪标的完整的过程
oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http
oracle创建新用户过程,备份用户数据,创建用户,授权,导入数据
本文非常详细的介绍了创建Oracle数据库的表空间、用户的过程,对初学者有很大帮助。
oracle学习过程中的详细笔记,包含存储过程、存储函数、用户授权以及最基本的oracle的安装和卸载
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...
使用PLSQL 创建Oracle数据库用户并设置权限
export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export ORACLE_SID=cams export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data...
Oracle复习用脚本文件(相当全) 包括授权 查询 触发器 过程函数的调用
本书介绍了自动备份和恢复过程,提供了透明故障转移功能、审核和调整性能、以及用Oracle Net分布企业数据库。 本书主要内容 规划和部署永久表空间、临时表空间和大文件表空间 优化磁盘分配、CPU利用率、I/O...
4 Oracle:数据库创建,授权 6分 5 Oracle:plsql块 5分 6 Oracle:过程与函数 6分 7 Oracle:plsql块 6分 8 Oracle:plsql,过程与函数 8分 9 Oracle:建表,组合索引 6分 10 Oracle:序列 6分 11 Oracle:视图 5分 12 ...
Oracle一个完整的过程,创建用户、创建表空间、授权、导入sql脚本
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...
本书介绍了自动备份和恢复过程,提供了透明故障转移功能、审核和调整性能、以及用Oracle Net分布企业数据库。 本书主要内容 规划和部署永久表空间、临时表空间和大文件表空间 优化磁盘分配、CPU利用率、I/O...
Java-Oracle-UDP通信,包括触发器、存储过程、服务器端java类、数据库授权、以及全部相关配置说明
用户能访问数据库前必须要有获得相应授权的账号,oracle中创建一个用户并为其分配密码很简单,但是在创建用户的同时其实还可以指定很多该用户的属性,另外还有用户的特权授予。 以便用户去执行相应的操作。当创建了一...
1.15 tarena给jsd1304授权 2 1.16课程中使用的5个表 3 二、 select from语句 5 2.1 select语句功能 5 2.2 select语句基本语法 5 2.3列别名 5 2.4算术表达式 5 2.5空值null的处理 5 2.6 nvl(p1,p2)函数 5 2.7拼接...
记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要 成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解 Oracle基础部分:oracle基础使用; ...