如题:
比如有一视图如下: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
比如有一视图如下: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
根据视图的创建语句
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 COLUMN_NAME from all_tab_columns WHERE TABLE_NAME='视图名'