无法从JDBC获取DatabaseMetaData for Procedure

时间:2016-08-31 14:33:32

标签: java oracle stored-procedures jdbc

我有两个问题:  我无法通过JDBC获取Procedure MetaData 1.)如果我的程序在一个包中 2.)如果过程在包外,但用户是非模式所有者,但可以访问过程

对于(1)我提到了this链接,但即使使用Schema所有者作为程序用户也没有为我工作

这是我的代码段的样子:

 DatabaseMetaData metadata = conn.getMetaData();

        ResultSet rs = metadata.getProcedureColumns(
                    "PKG_TEST",
                    "ENTITLE",
                    "getUser",
                "%"); // Tried with null instead of % as well

其中getUser是Schema ENTITLE中PKG_TEST内的过程

唯一对我有用的是:

 ResultSet rs = metadata.getProcedureColumns(
                conn.getCatalog(),
                null,
                "getUser1",
           null); 

其中getUser1是任何包之外的过程,但在模式ENTITLE中,程序以ENTITLE身份登录到数据库

访问架构的数据库元数据是否需要任何权限?

请注意,在上面的示例中,如果我以有权访问该过程但不是架构所有者的数据库用户身份登录,则它不起作用。

1 个答案:

答案 0 :(得分:0)

Oracle以大写形式存储名称

String p = "getUser1";

ResultSet rs = metadata.getProcedureColumns(
               conn.getCatalog(),
               null,
               p.toUpperCase(),
               null);