我有两个问题: 我无法通过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身份登录到数据库
访问架构的数据库元数据是否需要任何权限?
请注意,在上面的示例中,如果我以有权访问该过程但不是架构所有者的数据库用户身份登录,则它不起作用。
答案 0 :(得分:0)
Oracle以大写形式存储名称
String p = "getUser1";
ResultSet rs = metadata.getProcedureColumns(
conn.getCatalog(),
null,
p.toUpperCase(),
null);