比如有一视图如下:
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
7 个解决方案
#1
貌似没办法
#2
为什么会要这样的需求呢?
你可以通过查看视图创建的语句就知道哪些列来自哪些表嘛
你可以通过查看视图创建的语句就知道哪些列来自哪些表嘛
#3
想自动把视图和表的列插入到一张表中,做报表用
#4
楼主可以自己解析 不过很麻烦
根据视图的创建语句
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写起来会很复杂,而且不稳定
根据视图的创建语句
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写起来会很复杂,而且不稳定
#5
这个需求有点怪
自己写代码解析吧
自己写代码解析吧
#6
#7
select COLUMN_NAME FROM user_col_comments WHERE TABLE_NAME='视图名'
select COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'
select COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'
#1
貌似没办法
#2
为什么会要这样的需求呢?
你可以通过查看视图创建的语句就知道哪些列来自哪些表嘛
你可以通过查看视图创建的语句就知道哪些列来自哪些表嘛
#3
想自动把视图和表的列插入到一张表中,做报表用
#4
楼主可以自己解析 不过很麻烦
根据视图的创建语句
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写起来会很复杂,而且不稳定
根据视图的创建语句
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写起来会很复杂,而且不稳定
#5
这个需求有点怪
自己写代码解析吧
自己写代码解析吧
#6
#7
select COLUMN_NAME FROM user_col_comments WHERE TABLE_NAME='视图名'
select COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'
select COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'