前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle创建用户并把当前的表视图给予权限

Oracle创建用户并把当前的表视图给予权限

作者头像
overme
发布2022-01-17 08:20:08
1.1K0
发布2022-01-17 08:20:08
举报
文章被收录于专栏:数据开发笔记数据开发笔记

Oracle

代码语言:javascript
复制
DROP USER "用户名";

CREATE USER "用户名"  PROFILE "DEFAULT" 
    IDENTIFIED BY "密码" ACCOUNT UNLOCK;

DECLARE
  V_SQL VARCHAR2(1000);
BEGIN
  FOR OBJ_INFO IN (SELECT T1.IS_TABLE, T1.OWNER, T1.OBJ_NAME, T2.USER_NAME
                     FROM (SELECT 1          AS IS_TABLE,
                                  USER       AS OWNER,
                                  TABLE_NAME AS OBJ_NAME
                             FROM USER_TABLES
                           UNION ALL
                           SELECT 0         AS IS_TABLE,
                                  USER      AS OWNER,
                                  VIEW_NAME AS OBJ_NAME
                             FROM USER_VIEWS) T1,
                          (SELECT '用户名' AS USER_NAME
                             FROM DUAL
                           ) T2
                    WHERE T1.OWNER <> T2.USER_NAME
                    ORDER BY T1.IS_TABLE DESC, T1.OBJ_NAME, T2.USER_NAME) LOOP

    SELECT 'grant select'||
           DECODE(OBJ_INFO.IS_TABLE, 1,
                  ', insert, update, delete, index, alter ', ' ')  || ' on ' ||
           OBJ_INFO.OWNER || '.' || OBJ_INFO.OBJ_NAME || ' to ' ||
           OBJ_INFO.USER_NAME || ' with grant option'
      INTO V_SQL
      FROM DUAL;


    BEGIN
      EXECUTE IMMEDIATE V_SQL;
    EXCEPTION
      WHEN OTHERS THEN
       ---用户或角色不存在,不打印错误信息
       IF SQLCODE NOT IN (-1917,-1918,-1919) THEN 
        DBMS_OUTPUT.PUT_LINE(V_SQL || ';');
       END IF;
    END;
  END LOOP;
END;

本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/10/28 15:46:00

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档