SQL 获取oracle视图的列名以及列名对应的表名

qin_phoenix 2011-01-26 12:11:00
如题:
比如有一视图如下:

CREATE OR REPLACE VIEW V_TEST AS
SELECT A.C, A.D, A.E, B.F.B.G, B.H
FROM A_TEST A, B_TEST B;


c,d,e属于TEST 表,f,g,h 属于b_test表,

能否得到V_TEST 视图的所有列名及列名对应的表名。

希望的结果:

表名 列名
A_TEST C
A_TEST D
A_TEST E
B_TEST F
B_TEST G
B_TEST H

...全文
632 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TonyWang 2011-10-28
  • 打赏
  • 举报
回复
select COLUMN_NAME FROM user_col_comments WHERE TABLE_NAME='视图名'
select COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'
minitoy 2011-01-26
  • 打赏
  • 举报
回复
貌似没办法
LamarChen 2011-01-26
  • 打赏
  • 举报
回复
这个需求有点怪
自己写代码解析吧
UPC子夜 2011-01-26
  • 打赏
  • 举报
回复
楼主可以自己解析 不过很麻烦
根据视图的创建语句
SELECT A.C, A.D, A.E, B.F.B.G, B.H
FROM A_TEST A, B_TEST B;
先把from 和where之间的字符串取出来,并根据逗号分隔,再根据空格分隔,防止有重命名的表,这样可以把表名取出来
再把select 和 from之间的字段以逗号分隔,还要判断有没有as重命名,然后根据字段前的表别名找到字段所属的表,没有重名名的就要查一下属于哪个表
我感觉,这个sql写起来会很复杂,而且不稳定
qin_phoenix 2011-01-26
  • 打赏
  • 举报
回复
想自动把视图和表的列插入到一张表中,做报表用
  • 打赏
  • 举报
回复
为什么会要这样的需求呢?
你可以通过查看视图创建的语句就知道哪些列来自哪些表嘛

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧