【问题标题】:strange DB2 Exception while executing queries执行查询时出现奇怪的 DB2 异常
【发布时间】:2015-03-11 04:31:07
【问题描述】:

我正在运行一些 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中传递逗号分隔的employeeIds,只有当它超过某个限制/长度时,它才会失败并给出这个错误。

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

【问题讨论】:

标签: java stored-procedures db2


【解决方案1】:

22001 表示字符数据,发生右截断;例如,更新或插入值是对于列而言太长的字符串,或者由于太小而无法将日期时间值分配给宿主变量。

这里是不同 DB2 错误代码的链接 https://urssanj00.wordpress.com/2008/03/04/db2-sql-error-code-and-description/

【讨论】:

  • 没错,其实我几天前就解决了这个问题。实际上发生了什么,我传递了一个长度超过定义的 varchar 限制的字符串。 :) 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多