`

oracle授权过程

阅读更多

/* 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单独授权表或视图或存储过程.doc

    ORACLE数据库需要授权部分数据表给某个用户,而不是全数据库授权给用户。则可以根据附件内容进行操作。

    Oracle数据库(表空间、用户、授权、存储过程、触发器)

    Oracle数据库(表空间、用户、授权、存储过程、触发器)

    oracle一个创建用户,创建表空间、授权、剪标的完整的过程

    oracle一个创建用户,创建表空间、授权、剪标的完整的过程

    oracle 触发器实时调用java 中http接口

    oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http

    oracle 创建新用户 过程

    oracle创建新用户过程,备份用户数据,创建用户,授权,导入数据

    Oracle用户授权

    本文非常详细的介绍了创建Oracle数据库的表空间、用户的过程,对初学者有很大帮助。

    oracle学习笔记2013(+安装、卸载)

    oracle学习过程中的详细笔记,包含存储过程、存储函数、用户授权以及最基本的oracle的安装和卸载

    Oracle11g从入门到精通2

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    使用PLSQL 创建Oracle数据库用户并设置权限

    使用PLSQL 创建Oracle数据库用户并设置权限

    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复习用脚本文件(相当全) 包括授权 查询 触发器 过程函数的调用

    Oracle.Database.11g.DBA手册.完整中文 (97M) part2/2

    本书介绍了自动备份和恢复过程,提供了透明故障转移功能、审核和调整性能、以及用Oracle Net分布企业数据库。  本书主要内容  规划和部署永久表空间、临时表空间和大文件表空间  优化磁盘分配、CPU利用率、I/O...

    XML Oracle Servlet 复习汇总(S2)

    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导入脚本

    Oracle一个完整的过程,创建用户、创建表空间、授权、导入sql脚本

    Oracle11g从入门到精通

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    Oracle.Database.11g.DBA手册.完整中文 (97M) part1/2

    本书介绍了自动备份和恢复过程,提供了透明故障转移功能、审核和调整性能、以及用Oracle Net分布企业数据库。  本书主要内容  规划和部署永久表空间、临时表空间和大文件表空间  优化磁盘分配、CPU利用率、I/O...

    Java-Oracle-UDP通信

    Java-Oracle-UDP通信,包括触发器、存储过程、服务器端java类、数据库授权、以及全部相关配置说明

    详解oracle用户创建(create user)

    用户能访问数据库前必须要有获得相应授权的账号,oracle中创建一个用户并为其分配密码很简单,但是在创建用户的同时其实还可以指定很多该用户的属性,另外还有用户的特权授予。 以便用户去执行相应的操作。当创建了一...

    Oracle数据库、SQL

    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高手过程:理解小知识点-&gt;做小练习-&gt;把小的只是点连成线-&gt;做oracle项目-&gt;形成只是面-&gt;深刻理解 Oracle基础部分:oracle基础使用; ...

Global site tag (gtag.js) - Google Analytics