Java 如何通过JDBC获取视图引用(基表)?

Java 如何通过JDBC获取视图引用(基表)?,java,database,oracle,jdbc,metadata,Java,Database,Oracle,Jdbc,Metadata,当我创建视图时,数据库引擎对我的查询进行PASS,并以某种方式存储它。然后我可以找出一个视图使用哪些表吗?我知道不同的数据库可能会有所不同。JDBC可能具有某种抽象级别 有些东西告诉我这是通过getTables(?)完成的: 如果不能。是否有专门针对Oracle数据库的解决方案(如plsql developer中的视图/引用)?Oracle: Select * from dictionary 返回您有权访问的许多系统表/函数,其中包含有价值的结构信息 在该列表中,您将看到 从所有视图中选择*

当我创建视图时,数据库引擎对我的查询进行PASS,并以某种方式存储它。然后我可以找出一个视图使用哪些表吗?我知道不同的数据库可能会有所不同。JDBC可能具有某种抽象级别

有些东西告诉我这是通过getTables(?)完成的:

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

Oracle:

Select * from dictionary 
返回您有权访问的许多系统表/函数,其中包含有价值的结构信息

在该列表中,您将看到

从所有视图中选择*(其中包含视图的源SQL),这些视图可以被解析为表名

虽然我认为有一个all_Dependencies或all_References视图,它将包含对单独字段中的表的必需引用,这将更容易解析,但我现在正在寻找它

从所有依赖项中选择*,其中Name='YOUR\u VIEWNAME'和Referenced\u Type='TABLE'
将返回所有引用的表


虽然我不确定这些功能如何与链接表一起使用。因此,如果您通过链接服务器引用外部表。。。这些功能可能不起作用。

编辑:别担心,误读了这个问题:我以为你想自己检索视图

据我所知,没有特定于JDBC的方法来检索这些信息:您需要深入到特定于数据库的系统表中,看看这些信息是否可用

下面的答案指定如何检索视图,但不回答问题:

类型为“视图”

乙二醇


找到了一些wizdom,因为我以为你在寻找Oracle解决方案;因此,如果视图引用视图,则需要对所有依赖项进行分层查询以获取所有表。啊,是的,我忘记了这一点。您可以进一步说,如果视图引用函数,那么您还需要使用分层查询。
Select * from dictionary 
dmd.getTables(catalog, schema, "%", new String[] {"VIEW"});