oracle 如何通过JDBC获取VIEW引用(基表)?

nuypyhwy  于 2023-06-22  发布在  Oracle
关注(0)|答案(2)|浏览(93)

当我创建VIEW时,数据库引擎会传递我的查询并以某种方式存储它。那么我能找出一个视图使用了哪些表吗?我知道不同的数据库可能会有所不同。可能有某种抽象级别抛出JDBC。
有些东西告诉我,这是通过getTables(?):

Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);        
DatabaseMetaData md = con.getMetaData();
md.getTables(null, null, null, null);

如果不能的话。是否有特别针对Oracle数据库的解决方案(如plsql developer中的视图/引用)?

jrcvhitl

jrcvhitl1#

据我所知,没有JDBC特定的方法来检索此信息:你将需要深入到你的数据库特定的系统表中,看看是否有可用的信息。
本答案的其余部分描述了如何检索视图,但没有回答以下问题:
DatabaseMetaData#getTables(),类型为“VIEW”
比如说,

dmd.getTables(catalog, schema, "%", new String[] {"VIEW"});
ep6jt1vc

ep6jt1vc2#

先知:

Select * from dictionary

返回您有权访问的许多系统表/函数,其中包含有价值的结构信息。
在该列表中,您将看到
Select * from ALL_Views(包含视图的源SQL),可以解析表名。
虽然我认为有一个all_Dependencies或all_References视图,它将包含对单独字段中的表的必要引用,这将更容易解析,我现在正在寻找它。
Select * from All_dependencies WHERE Name = 'YOUR_VIEWNAME' and Referenced_Type='TABLE'将返回所有引用的表。
虽然我不确定这些功能如何与链接表一起工作。所以如果你通过链接服务器引用外部表...那些特征可能不起作用。

相关问题