将某个用户下面的所有表的查询权限赋给另外一用户

本文介绍了一个使用Oracle DBMS_SQL包动态执行SQL语句的过程,包括打开光标、解析SQL、定义列、执行查询并获取结果集,最终实现对指定用户进行表级权限的批量授权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网址:http://hi.baidu.com/lichangzai/blog/item/ccf30bec6bb451d52e2e2131.html

 PROCEDURE GRANT_SQL
   AS
      THE_C1      NUMBER;/*©w¸q¥ú¼Ð*/
      THE_RESULT  NUMBER;
      V_TABLE     VARCHAR2(80);
      V_SQL       VARCHAR2(400);
   BEGIN
      /*1.為處理打開光標*/
      THE_C1 :=DBMS_SQL.OPEN_CURSOR;
      /*2.分析語句*/
      DBMS_SQL.PARSE(THE_C1,'SELECT TABLE_NAME FROM USER_TABLES',DBMS_SQL.NATIVE);
      /*3.定義相關字段*/
      DBMS_SQL.DEFINE_COLUMN(THE_C1,1,V_TABLE,80);
      /*4.執行語句*/
      THE_RESULT := DBMS_SQL.EXECUTE(THE_C1);
     LOOP
       IF DBMS_SQL.FETCH_ROWS(THE_C1) > 0 THEN
          /*取出字段值*/
          DBMS_SQL.COLUMN_VALUE(THE_C1,1,V_TABLE);           
          /*組成動態SQL語句*/
          V_SQL := 'GRANT SELECT ON '||V_TABLE||' TO NEW_USER';
          /*執行SQL語句*/
          EXECUTE IMMEDIATE V_SQL;        
       ELSE
         GOTO EEND;
       END IF;
     END LOOP;
     <<EEND>>
     /*關閉游標*/
     DBMS_SQL.CLOSE_CURSOR(THE_C1);
  END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值