Java 执行查询时出现奇怪的DB2异常

Java 执行查询时出现奇怪的DB2异常,java,stored-procedures,db2,Java,Stored Procedures,Db2,我正在运行一些DB2查询,然后调用一个PL sql过程 程序调用是 CallableStatement callStmt = con.prepareCall( // "CALL INIT_PAYROLL(?,?,?,?,?,?,?,?,?,?)"); // Set IN parameters callStmt.setString(1, start_date);//IN callStmt.setString(2, end_date); //IN callStmt.setInt(3,

我正在运行一些DB2查询,然后调用一个PL sql过程

程序调用是

CallableStatement callStmt = con.prepareCall( //
        "CALL INIT_PAYROLL(?,?,?,?,?,?,?,?,?,?)");
// Set IN parameters
callStmt.setString(1, start_date);//IN
callStmt.setString(2, end_date); //IN
callStmt.setInt(3, customer_id);//IN
callStmt.setString(4, payrollMain_id+"");//IN
callStmt.setString(5, ruleFreq );//IN
callStmt.setInt(6, 0);
callStmt.setString(7, outerArray);//IN
callStmt.setString(8, commsSepEmps);//IN
callStmt.setInt(9, isIncremental);
callStmt.registerOutParameter (10, Types.VARCHAR);
//Call the procedure
callStmt.executeUpdate();
toReturnStatus = callStmt.getString(10);
System.out.println("OutPutResult--    : " + toReturnStatus);
但我面临着一些奇怪的问题。我不知道为什么会这样

另一个问题是,如果我从Java文件中调用此过程,并且如果PLSql过程中发生异常,该异常是否会打印为DB2异常

错误:

[2/27/15 17:00:15:778 IST] 0000280f SystemErr     R com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-433, SQLSTATE=22001, SQLERRMC=129727:12068,133389:12069,133390:12070,133391:12071,133393:1, DRIVER=3.62.56
在这个错误129727:12068中,是employee_id:primaryKeyOFtable

编辑:SP不会在任何情况下都给出问题,我在SP中传递逗号分隔的EmployeeID,只有当它超过某个特定限制/长度时,才会失败并给出此错误


EDIT我解决了/发现了错误,实际上我传递的字符串长度超过了定义的VarChar限制。:)

22001表示字符数据,右截断;例如,update或insert值是一个对于列来说太长的字符串,或者datetime值不能分配给主机变量,因为它太小

下面是包含不同DB2错误代码的链接

尝试从SSMS运行SP。不,它不会在任何情况下都失败。我已经更新了详细信息,请检查。你有没有机会阅读?没错,实际上我几天前就解决了这个问题。实际发生的情况是,我传递的字符串长度超过了定义的varchar限制。:)谢谢你的帮助。