打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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;


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【安全警告】Oracle 12c 多租户的SQL注入高危风险防范
oracle 失效对象自动重新编译
用一篇文章告诉你如何篡改 Python 虚拟机
如何对某个用户下的DDL语句进行审计
DateConverter does not support default String to 'Date' conversion.
java利用mybatis拦截器统计sql执行时间示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服