繁体   English   中英

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

[英]strange DB2 Exception while executing queries

我正在运行一些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,仅当它超过某个特定的限制/长度时,它会失败并给出此错误。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM