您的位置:首页 > 数据库 > Oracle

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

2017-02-25 14:01 666 查看
查询由指定用户创建的表

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>=?";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐