ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 用户权限获取Procedure

Oracle 用户权限获取Procedure

原创 Linux操作系统 作者:myhuaer 时间:2013-09-17 16:38:31 0 删除 编辑

CREATE OR REPLACE PROCEDURE grant_priv

      /*

            grant select and dml privilege to

            user

      */

      (strToUser VARCHAR2,

       strPriv  VARCHAR2 )

AS

      strSql VARCHAR2(500);

      lngCount NUMBER(10);

      tab_name VARCHAR2(100);

      CURSOR cur_tab IS

            SELECT table_name FROM user_tables  ORDER BY 1;

BEGIN

      strSql:=' SELECT COUNT(*) FROM dba_users WHERE  username='''||strToUser||'''';

      EXECUTE IMMEDIATE strSql INTO lngCount ;

     

      IF lngCount>0 THEN

            --GRANT DELETE ON AM_DEPT TO LIS

            IF strPriv ='SEL' THEN

                  OPEN cur_tab ;

                  LOOP

                        FETCH cur_tab INTO tab_name;

                        EXIT WHEN cur_tab%NOTFOUND;

                        strSql:='GRANT SELECT ON '||tab_name|| ' TO '|| strToUser;

                        EXECUTE IMMEDIATE strsql;

                        --dbms_output.put_line(strSql);

                  END LOOP;

                  CLOSE cur_tab;   

            END IF;

 

            IF strPriv ='DML' THEN

                  OPEN cur_tab ;

                  LOOP

                        FETCH cur_tab INTO tab_name; 

                        EXIT WHEN cur_tab%NOTFOUND;

                        strSql:='GRANT ALL ON '||tab_name|| ' TO '|| strTouser;

                        EXECUTE IMMEDIATE strsql;

                        --dbms_output.put_line(strsql);

                  END LOOP;

                  CLOSE cur_tab;   

            END IF;

      END IF;

END grant_priv;


多年前写的内容,请测试后使用。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/34596/viewspace-772854/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-09-11

  • 博文量
    211
  • 访问量
    635986