【问题标题】:How to get VIEW references (base tables) through JDBC?如何通过 JDBC 获取 VIEW 引用(基表)?
【发布时间】:2012-01-08 20:38:08
【问题描述】:

当我创建 VIEW 时,数据库引擎会粘贴我的查询并以某种方式存储它。然后我可以找出一个视图使用哪些表吗?我了解不同的数据库可能会有所不同。可能有某种抽象级别的抛出 JDBC。

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

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

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

【问题讨论】:

    标签: java database oracle jdbc metadata


    【解决方案1】:

    甲骨文:

    Select * from dictionary 
    

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

    您将在该列表中看到

    Select * from ALL_Views(包含视图的源 SQL)可以解析为表名。

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

    Select * from All_dependencies WHERE Name = 'YOUR_VIEWNAME' and Referenced_Type='TABLE' 将返回所有引用的表。

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

    【讨论】:

    • mssqlothers找到了一些wizdom
    • 我以为你是在寻找 Oracle 解决方案;因此卡在 oracle sys 表中
    • 如果您的视图引用视图,那么您需要对 ALL_DEPENDENCIES 进行分层查询以获取所有表。
    • 啊,是的,我忘记了那个方面。你可以更进一步说,如果视图引用了函数、过程,你也需要使用分层查询。
    【解决方案2】:

    编辑:没关系,误读了问题:我以为你想自己检索视图。

    据我所知,没有特定于 JDBC 的方法来检索此信息:您需要深入了解特定于数据库的系统表并查看该信息是否可用。

    Answer 下面指定了如何检索视图并且不回答问题:

    DatabaseMetaData#getTables() 类型为“VIEW”

    例如

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

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 1970-01-01
      • 2012-06-27
      • 2014-04-25
      • 2012-09-30
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多