【发布时间】:2017-01-08 05:07:26
【问题描述】:
我有两个问题: 我无法通过 JDBC 获取过程元数据 1.)如果我的程序在一个包内 2.) 如果过程在包之外,但用户是非模式所有者,但可以访问过程
对于 (1) 我提到了 this 链接,但即使使用 Schema owner 作为程序用户也对我不起作用
这是我的代码 sn-p 的样子:
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 身份登录数据库
访问架构的数据库元数据是否需要任何权限?
请注意,在上面的示例中,如果我以有权访问该过程但不是架构所有者的 DB 用户身份登录,它将不起作用。
【问题讨论】:
-
Note that in the example above that works if I login as a DB user that has access to the procedure , it doesn't work.我不知道你在说什么。登录到数据库时是否有效? -
Oracle 以大写形式存储名称,所以
"getUser"很可能应该是"GETUSER" -
Susannah Potts ,更正了最后一行。如果我不以架构用户身份登录,基本上它不起作用。
-
a_horse_with_no_name ,当我创建程序时,我添加了引号。另一个在创建时已经大写的程序也无法正常工作。
标签: java oracle stored-procedures jdbc