1

我需要从我的 Java 应用程序中调用一些 PL/SQL 过程。我可以用 JDBC 做到这一点。但问题是程序正在使用“ PL/SQL Web Toolkit ”及其包(htp、owa_util、owa_cookie、...)。当我打电话给他们时,我会遇到一些例外情况:

Exception in thread "main" java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.OWA_UTIL", line 323
ORA-06512: at "SYS.HTP", line 859
ORA-06512: at "SYS.HTP", line 974
...

是否可以使用 Java 包或任何其他方式调用这些过程?

我不能修改这些程序,但我不能创建一些。

谢谢你的帮助。

4

3 回答 3

2

htf 和 htp 假设有些东西要提前设置好。当调用通过像 mod_plsql 这样的 PL/SQL 网关时,这会自动完成。但也可以手动完成。

Ask Toad wiki上有一个很好的解释

要成功使用 htp 和 htf,您需要定义几个变量,然后初始化 cgi 环境。

于 2009-09-03T15:38:24.767 回答
0

该错误消息意味着您正在传递错误数据类型的参数或将结果分配给错误数据类型的变量。您需要重新检查您的代码,尤其是它的分配。或者,您可以在此处发布您的代码:我相信 SO Brains 之一将能够发现问题。

顺便说一句,您调用的是 OWA_UTIL 中的哪个方法?

于 2009-09-03T11:59:51.273 回答
0

这是示例代码,您可以如何做到这一点---

              CallableStatement stmt = conn.prepareCall("? = call test(?)");
              stmt.registerOutParameter(1, OracleTypes.INTEGER);
              stmt.setString(2, "callIndex");
              stmt.execute();
              Integer outputValue = stmt.getInt(1);

这里的测试是一个存储函数,通过java“可调用语句”调用。此外,如果您需要将变量传递给存储过程或oracle中的函数,您必须使用OracleTypes将正确的变量传递到那里。

于 2014-07-15T12:42:58.080 回答