我需要从我的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包或任何其他方式调用这些过程吗?
我无法修改这些程序,但我无法创建一些。
感谢您的帮助。
答案 0 :(得分:2)
htf和htp假设某些事情将提前设置。当调用通过像mod_plsql这样的PL / SQL网关时,这会自动完成。但它也可以手动完成。
有一个很好的解释成功使用htp& htf,你需要定义几个变量,然后初始化cgi环境。
答案 1 :(得分:0)
该错误消息表示您正在传递错误数据类型的参数或将结果分配给错误数据类型的变量。您需要重新检查您的代码,特别是其分配。或者你可以在这里发布你的代码:我确信其中一个SO大脑能够发现问题。
顺便说一句,你在OWA_UTIL中调用哪种方法?
答案 2 :(得分:0)
这里是示例代码,您可以如何做到这一点---
CallableStatement stmt = conn.prepareCall("? = call test(?)");
stmt.registerOutParameter(1, OracleTypes.INTEGER);
stmt.setString(2, "callIndex");
stmt.execute();
Integer outputValue = stmt.getInt(1);
这里test是一个存储函数,它通过java" callable语句调用"。如果你需要将变量传递给存储过程或oracle中的函数,你必须在OracleTypes中传递正确的变量在那边。