当我创建VIEW时,数据库引擎会传递我的查询并以某种方式存储它。那么我能找出一个视图使用了哪些表吗?我知道不同的数据库可能会有所不同。可能有某种抽象级别抛出JDBC。
有些东西告诉我,这是通过getTables(?):
Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
DatabaseMetaData md = con.getMetaData();
md.getTables(null, null, null, null);
如果不能的话。是否有特别针对Oracle数据库的解决方案(如plsql developer中的视图/引用)?
2条答案
按热度按时间jrcvhitl1#
据我所知,没有JDBC特定的方法来检索此信息:你将需要深入到你的数据库特定的系统表中,看看是否有可用的信息。
本答案的其余部分描述了如何检索视图,但没有回答以下问题:
DatabaseMetaData#getTables(),类型为“VIEW”
比如说,
ep6jt1vc2#
先知:
返回您有权访问的许多系统表/函数,其中包含有价值的结构信息。
在该列表中,您将看到
Select * from ALL_Views
(包含视图的源SQL),可以解析表名。虽然我认为有一个all_Dependencies或all_References视图,它将包含对单独字段中的表的必要引用,这将更容易解析,我现在正在寻找它。
Select * from All_dependencies WHERE Name = 'YOUR_VIEWNAME' and Referenced_Type='TABLE'
将返回所有引用的表。虽然我不确定这些功能如何与链接表一起工作。所以如果你通过链接服务器引用外部表...那些特征可能不起作用。