oralce中例如下面这个视图: Create or replcae view vw_test as select table1.a,table2.b from table left join table2 on table2.id=table1.id; 查询结果:cloumn table--------------------------------------------------- a table1 b table2
创建一个函数 参数是一个视图和一个列,返回值是含有这个列的第一个表
函数中先把视图的所有表取出来 然后select colname from tablename 报错说明不在这个表中 继续查询下一个表
不报错就返回表名
思路就是这样 具体的楼主自己写吧
列名 表名
a table1
b table2
select column_name,table_name from user_tab_columns where table_name=upper('table1') or table_name=upper('table2')
不知道是不是你想要的
我今天下午写了一下 只处理了比较简单的视图 就是关联的表不多 只有一个from和一个where的 再多的就很麻烦了
--你不就是想知道视图中的列来自于那个表嘛?
--查看一下view定义语句不就知道了啊!
select dbms_metadata.get_ddl('VIEW','VW_TEST') from dual;