如何获取物化视图对应的物理表列名、数据类型及视图列别名
物化视图关联列信息查询方案(Oracle环境)
以下方案适配你给出的单基表物化视图场景,通过查询Oracle系统视图即可直接获取基表原始列名、对应数据类型、以及物化视图中的列别名:
- 前提条件:持有当前用户下系统视图查询权限、
dbms_metadata包调用权限(普通用户默认已开通) - 操作步骤:执行以下SQL即可得到你需要的结果
SELECT mv.mview_name AS "VIEW NAME", tc.column_name AS "NAME COLUMN", tc.data_type AS "TYPE OF DATE", mvc.column_name AS "COLUMN ALIASES" FROM user_mviews mv INNER JOIN user_tab_columns mvc ON mv.mview_name = mvc.table_name INNER JOIN user_dependencies dep ON dep.name = mv.mview_name AND dep.type = 'MATERIALIZED VIEW' AND dep.referenced_type = 'TABLE' INNER JOIN user_tab_columns tc ON dep.referenced_name = tc.table_name AND tc.column_name = REGEXP_REPLACE( dbms_metadata.get_ddl('MATERIALIZED_VIEW', mv.mview_name), '.*SELECT\s+(.*?)\s+AS\s+'||mvc.column_name||'\s+.*FROM.*', '\1', 1, 0, 'i' ) WHERE mv.mview_name = 'ORDER_DATA' ORDER BY mvc.column_id;
- 扩展说明:如果需要查询全库所有物化视图的对应信息,删除WHERE条件即可;如果使用管理员账号查询,可将所有视图前缀
USER_替换为DBA_,注意Oracle默认保存的对象名均为大写,查询时注意大小写匹配。
输出结果示例
| VIEW NAME | NAME COLUMN | TYPE OF DATE | COLUMN ALIASES |
|---|---|---|---|
| order_data | DATA | VARCHAR | EXAMPLE1 |
| order_data | DATA2 | NUMBER | EXAMPLE2 |
内容的提问来源于stack exchange,提问作者Giancarlo
相关产品推荐
相关产品推荐

