PL/SQL中如何按架构所有者获取各用户名下的用户表列表
按架构所有者分组展示用户表的SQL解决方案
如果你需要按架构所有者分组展示对应表,可通过以下两种方式实现:
方式1:排序后分组展示
通过对Owner字段排序,让同一所有者的表集中显示,同时按表名排序便于查看:
SELECT Owner, Table_Name FROM all_tables ORDER BY Owner, Table_Name;
方式2:聚合表名到单行展示
如果希望每个所有者对应一行,将其名下所有表名拼接在一起,可使用LISTAGG函数(Oracle 11g及以上版本支持):
SELECT Owner, LISTAGG(Table_Name, ', ') WITHIN GROUP (ORDER BY Table_Name) AS Tables FROM all_tables GROUP BY Owner ORDER BY Owner;
原语句问题说明
- 第一条语句从
all_objects查询时,仅返回了Owner和Object_Type,未获取实际表名,无法满足需求; - 第二条语句虽能拿到
Owner和Table_Name,但缺少排序逻辑,结果无序,无法直观体现分组。
内容的提问来源于stack exchange,提问作者Vs_93
相关产品推荐
相关产品推荐

