從Oracle向SQL Server中間庫交換數據的時候,出現了異常
com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據
具體異常信息如下:
Caused by:
com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:314)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:1104)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:771)
... 11 more
在網上搜羅了一下,大概有幾種原因會導致此異常
http://www.cnblogs.com/lingy/archive/2012/09/14/2684491.html
字段長度不夠
http://bbs.csdn.net/topics/330076495
有trigger處理業務邏輯
這次遇到的就是字段長度不夠的問題,SQL Server中定義的長度為24,而Oracle中定義的長度為50,修改字段長度,問題解決
判斷長度相關SQL語句如下:以字符串“某餐證字20112101230000159”為例
SQL Server中查詢的SQL語句
select len('某餐證字20112101230000159'),datalength('某餐證字20112101230000159');
長度為21,占用25個字節
Oracle中查詢的SQL語句
select length('某餐證字20112101230000159'), lengthb('某餐證字20112101230000159') from dual;
長度為21,占用25個字節