当我创建VIEW时,数据库引擎会调查我的查询并将其存储起来。然后我可以找出一个视图使用的表吗?据我所知,不同的数据库可能有所不同。可能有某种抽象级别抛出JDBC。
有些东西告诉我这是通过getTables(?)完成的:
Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
DatabaseMetaData md = con.getMetaData();
md.getTables(null, null, null, null);
如果不能。是否有针对Oracle数据库的解决方案(如plsql developer中的view / referenses)?
答案 0 :(得分:3)
甲骨文:
Select * from dictionary
返回许多您可以访问的系统表/函数,其中包含有价值的结构信息。
在该列表中,您将看到
Select * from ALL_Views
(包含视图的源SQL),可以为表名解析。
虽然我认为有一个all_Dependencies或all_References视图,它将包含对单独字段中表格的必需引用,这将更容易解析我现在正在寻找...
Select * from All_dependencies WHERE Name = 'YOUR_VIEWNAME' and Referenced_Type='TABLE'
将返回所有引用的表。
虽然我不确定这些功能如何与链接表一起使用。因此,如果您通过链接服务器引用外部表...这些功能可能无效。
答案 1 :(得分:3)
编辑:没关系,误读了这个问题:我以为你想自己检索这些视图。
据我所知,没有特定于JDBC的方法来检索此信息:您需要深入了解特定于数据库的系统表,并查看该信息是否可用。
下面的答案指定了如何检索视图而不回答问题:
带有“VIEW”类型的例如
dmd.getTables(catalog, schema, "%", new String[] {"VIEW"});