执行查询时出现奇怪的 DB2 异常
strange DB2 Exception while executing queries
我是 运行 一些 DB2 查询,然后我调用一个 PL sql 过程
Procedure 的调用是
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,
EDIT :SP 不会在任何情况下都出现问题,我在 SP 中传递逗号分隔的 employeeIds,只有当它超过某个特定的 limit/length 时,它才会失败并给出这个错误。
EDIT 我 solved/found 错误,实际上我正在传递一个长度超过定义的 VarChar 限制的字符串。 :)
22001表示字符数据,发生右截断;例如,更新或插入值是一个对于列来说太长的字符串,或者日期时间值不能分配给主变量,因为它太小了。
这是具有不同 DB2 错误代码的 link
https://urssanj00.wordpress.com/2008/03/04/db2-sql-error-code-and-description/
我是 运行 一些 DB2 查询,然后我调用一个 PL sql 过程
Procedure 的调用是
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,
EDIT :SP 不会在任何情况下都出现问题,我在 SP 中传递逗号分隔的 employeeIds,只有当它超过某个特定的 limit/length 时,它才会失败并给出这个错误。
EDIT 我 solved/found 错误,实际上我正在传递一个长度超过定义的 VarChar 限制的字符串。 :)
22001表示字符数据,发生右截断;例如,更新或插入值是一个对于列来说太长的字符串,或者日期时间值不能分配给主变量,因为它太小了。
这是具有不同 DB2 错误代码的 link https://urssanj00.wordpress.com/2008/03/04/db2-sql-error-code-and-description/