【问题标题】:Parameter limit on Callable statement - Oracle jdbc driver (oracle.jdbc.OracleDriver)Callable 语句的参数限制 - Oracle jdbc 驱动程序 (oracle.jdbc.OracleDriver)
【发布时间】:2014-10-21 15:56:55
【问题描述】:
我正在使用 IBM 消息代理 v8.0.0.2。我正在尝试调用具有 45 个参数的存储过程,进出。我使用 Oracle jdbc 驱动程序 (oracle.jdbc.OracleDriver)。事实证明,每当我尝试设置第 45 个 IN 或 OUT 参数时,我都会得到一个“无效的列索引”SqlException,这很奇怪。有这样的限制吗?
【问题讨论】:
标签:
jdbc
oracle11g
messagebroker
【解决方案1】:
给我们您创建的代码和异常列表中的异常,顺便说一下,使用 SQL Developer 或您正在使用的任何编辑器测试存储过程.. 使用 ESQL 和调用数据库存储过程创建过程。
CREATE PROCEDURE YourProcedureName(IN PARAM1 TYPE, IN PARAM2 TYPE,...,
OUT PARAM44 TYPE, INOUT PARAM45 TYPE)
LANGUAGE DATABASE DYNAMIC RESULT SETS 1 EXTERNAL NAME "ProcedureNameInDB";
在主函数中
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
--CopyMessageHeaders();
--CopyEntireMessage();
-- DECLARE HERE PARAMETERS FOR THE PROCEUDRE
-- In This Block Declare the 45 parameters for passing them in ESQL Procedure.
-- Then ESQL will pass them to Oracle Stored Procedure.
-- END DECLARE PARAMETERS FOR THE PROCEUDRE
-- Environment.DBRowSetResult: Storing Stored Procedure Output in Environment variable.
CALL YourProcedureName(param1, param2, .... param44,param45, Environment.DBRowSetResult);
END;