Oracle 中,获取指定用户所有有权限访问的表的基本信息、分页实现

1 篇文章 0 订阅

查询由指定用户创建的表

SELECT * FROM ALL_OBJECTS WHERE OWNER='用户名' AND OBJECT_TYPE='TABLE'

或者

SELECT * FROM USER_TABLES

但是上面这两种方式获取的 全部是由这个用户创建的表。

但是,试想一下下面这种情况:

  • 用户A 有一张表 tableA
  • 用户B 有一张表 tableB
  • 用户A将tableA的权限开放给了 用户B

    该如何查到 用户B 所有有权限访问的表呢?即 tableA 和 tableB。
    答案是:

SELECT * FROM ALL_TABLES ;

最后,给出Oracle中,查询 表的基本信息(表名、表的注、表的创建时间、表的修改时间等) 对应的SQL。

String sql = "SELECT " +
             "  * " +
             "FROM " +
             "  (" +
             "    SELECT " +
             "      AT.OWNER OWNER, AT.TABLE_NAME TABLE_NAME, UTC.COMMENTS COMMENTS, AO.CREATED CREATED, AO.LAST_DDL_TIME LAST_DDL_TIME, ROWNUM RN" +
             "    FROM" +
             "      ALL_TABLES AT" +

             "      LEFT JOIN" +
             "      ALL_OBJECTS AO" +
             "      ON" +
             "        AT.OWNER=AO.OWNER" +
             "        AND" +
             "        AT.TABLE_NAME=AO.OBJECT_NAME" +

             "      LEFT JOIN" +
             "      USER_TAB_COMMENTS UTC" +
             "      ON" +
             "        AO.OBJECT_NAME=UTC.TABLE_NAME" +

             "    WHERE" +
             "      ROWNUM<?" +
             "  ) " +
             "WHERE" +
             "  RN>=?";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值