网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.实例讲解sql_trace和access path.
.Oracle 9i应用COMPOSE和UNISTR创.
.虚拟文件系统 (VFS) 简介.
.用Oracle10g列值掩码技术隐藏敏感.
.当“菜鸟”遭遇Linux.
.Oracle 9i 在Red Hat Linux 8.0下.
.用SQL删除数据.
.Oracle 8i R2 (8.1.6) for Windo.
.在Oracle使用正规表达式编写更好.
.Oracle Database 10g:改善的表空.
.Oracle 10月份发表的一系列漏洞.
.PL/SQL异常处理初步.
.如何给表、列加注释.
.用SQL进行函数查询.
.收藏:W2k Server下Oracle 9iAS安.
.关于使用RMAN进行clone数据库二.
.Application Server明细列表.
.Oracle9i初始化参数中文说明11.
.Windows下管理Oracle9i服务.
.Oracle9i 数据库管理实务讲座(二.

用DBMS_SYS_SQL包进行批量授权

发表日期:2008-2-9



  在Oracle9i之前,假如你想要把对象权限授予某些用户,那么你需要使用该对象属主或者使用具有该对象with grant option权限的用户。
  
  很多时候你可能需要进行批量授权,那么DBMS_SYS_SQL包可以为你提供简便.
  
  以下过程供参考:
  declare
  sqltext varchar2(200);
  c integer;
  begin
  for userlist in (select user_id,username from all_users where username not in ('SYS','SYSTEM','EYGLE')) loop
  for tablelist in (select owner,table_name from dba_tables where owner = userlist.username) loop
  sqltext := 'grant all on 'tablelist.owner'.'tablelist.table_name ' to eygle with grant option';
  c := sys.dbms_sys_sql.open_cursor();
  sys.dbms_sys_sql.parse_as_user( c,sqltext,dbms_sql.native,userlist.user_id);
  sys.dbms_sys_sql.close_cursor(c);
  end loop;
  end loop;
  end;
  /
  
  以下是817中的执行过程,供参考:
  SQL> declare
   2 sqltext     varchar2(200);
   3 c        integer;
   4 begin
   5 for userlist in (select user_id,username from all_users where username not in ('SYS','SYSTEM','EYGLE')) loop
   6 for tablelist in (select owner,table_name from dba_tables where owner = userlist.username) loop
   7 sqltext := 'grant all on 'tablelist.owner'.'tablelist.table_name ' to eygle with grant option';
   8 c := sys.dbms_sys_sql.open_cursor();
   9 sys.dbms_sys_sql.parse_as_user( c,sqltext,dbms_sql.native,userlist.user_id);
   10 sys.dbms_sys_sql.close_cursor(c);
   11 end loop;
   12 end loop;
   13 end;
   14 /
  
  PL/SQL procedure sUCcessfully completed.
  
  SQL>
  SQL> set pause on
  SQL> select owner,table_name,privilege,grantable from dba_tab_privs where grantee='EYGLE' and owner='SCOTT';
  
  OWNER             TABLE_NAME           PRIVILEGE GRA
  ------------------------------ ------------------------------ ---------- ---
  SCOTT             BONUS             ALTER   YES
  SCOTT             BONUS             DELETE   YES
  SCOTT             BONUS             INDEX   YES
  SCOTT             BONUS             INSERT   YES
  SCOTT             BONUS             SELECT   YES
  SCOTT             BONUS             UPDATE   YES
  SCOTT             BONUS             REFERENCES YES
  SCOTT             DEPT              ALTER   YES
  SCOTT             DEPT              DELETE   YES
  SCOTT             DEPT              INDEX   YES
  SCOTT             DEPT              INSERT   YES
  
  OWNER             TABLE_NAME           PRIVILEGE GRA
  ------------------------------ ------------------------------ ---------- ---
  SCOTT             DEPT              SELECT   YES
  SCOTT             DEPT              UPDATE   YES
  SCOTT             DEPT              REFERENCES YES
  SCOTT             EMP              ALTER   YES
  SCOTT             EMP              DELETE   YES
  SCOTT             EMP              INDEX   YES
  .... right">(出处:清风软件下载学院)
上一篇:ORA-01092: ORACLE 例程终止 强行断开连接 人气:735
下一篇:Parses (Hard) Per Second硬解析 人气:677
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐