用spring执行存储过程

时间:2013-05-08 06:50:17

标签: java oracle stored-procedures sqldatatypes

当我尝试使用spring执行存储过程时,抛出此异常:

    Caused by: org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [{call TEST_PKG.DO_IT(?, ?, ?, ?, ?, ?, ?, ?, ?)}]; SQL state [72000]; error code [1461]; ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at "TEST.TEST_PKG", line 53
ORA-06512: at line 1
; nested exception is java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at "TEST.TEST_PKG", line 53
ORA-06512: at line 1

    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:124)
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:952)
    at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:985)
    at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:117)

我正在使用myfaces 1.2.5,spring 2.0.2

第一个参数是Integer,最后一个是NUMBER。 Oracle类型和Java类型的映射如下:

Integer -> Numeric
NUMBER -> Decimal.

我的问题是这个例外的原因是什么以及如何修复它?

提前致谢。

2 个答案:

答案 0 :(得分:0)

错误源自TEST.TEST_PKG

的LINE 53

似乎有一个带有错误绑定类型的INSERT语句。

答案 1 :(得分:0)

问题来自插入数据库的文本中的新行。我只是调用replacaAll(“\ n”,“”) 现在一切正常。