......我找到了原因 - 问题是存储过程中实际上有一个选择是从我的存储过程调用的,我没有注意到。删除后一切正常。
我从我的代码调用存储过程,它有一个输入和一个输出参数。由于某种原因,它给了我一个例外,不知道问题是什么,这里是代码:
int fileNumber
sql.call("{call initIMAGINE_IDENTIFIERS_DELTAS(?, ?)}", [type, Sql.INTEGER]){ number ->
fileNumber = number
}
这是存储过程的声明:
create procedure initIMAGINE_IDENTIFIERS_DELTAS
@reportType varchar(30) = '',
@loop_id int output
as
BEGIN
我得到的错误:
Oct 30, 2014 11:18:16 AM groovy.sql.Sql callWithRows
WARNING: Failed to execute: {call initIMAGINE_IDENTIFIERS_DELTAS(?, ?)} because: Output parameters have not yet been processed. Call getMoreResults().
Caught: java.sql.SQLException: Output parameters have not yet been processed. Call getMoreResults().
java.sql.SQLException: Output parameters have not yet been processed. Call getMoreResults().
at net.sourceforge.jtds.jdbc.ParamInfo.getOutValue(ParamInfo.java:159)
at net.sourceforge.jtds.jdbc.JtdsCallableStatement.getOutputValue(JtdsCallableStatement.java:124)
at net.sourceforge.jtds.jdbc.JtdsCallableStatement.getObject(JtdsCallableStatement.java:315)
at Test.init(SqlConnection.gy:26)
at Test$init.call(Unknown Source)
at SqlConnection.run(SqlConnection.gy:9)
相同的代码实际上在12.5兼容模式下对Sybase 15.1起作用,但对Sybase 15.7不起作用。我正在使用jtds 1.3.1驱动程序。