错误:java.sql.SQLException:JZ0P1:意外的结果类型

时间:2016-12-31 10:34:21

标签: java jdbc sybase

我的代码很简单

CallableStatement stmt = Conn.prepareCall ("{call  Reconciliation (?)}");
stmt.setString(date);
PS.executeUpdate();

如果与解决方案相关,则使用Sybase(Adaptive Server Enterprise / 15.7.0)和jconnect4驱动程序。 我的程序(Reconcliliation)是非常庞大的,所以我不能在这里发布它,但是在对来自另外2个表(Deals1和Deals2)的数据进行一些比较之后,它对一些表(Recon)进行了一些更新。它不会在过程中返回任何out个参数,只需要1个in参数即date。 当我运行java代码并使用可调用语句运行该过程时,它会在表中生成一些更新数据(Recon,count为500),之后我得到的错误是:

  

java.sql.SQLException:JZ0P1:意外的结果类型。           在com.sybase.jdbc3.jdbc.ErrorMessage.raiseError(未知来源)           在com.sybase.jdbc3.jdbc.SybStatement.updateLoop(未知来源)           在com.sybase.jdbc3.jdbc.SybStatement.executeUpdate(未知来源)           在com.sybase.jdbc3.jdbc.SybCallableStatement.executeUpdate(未知   资源)           在DBConnection.ExecuteProc(DBConnection.java:88)

我很确定我的程序(调节)没有错误,因为当我在Aqua Data Studio中使用命令exec Reconciliation '04-Dec-2016'运行相同的过程时,它不会给出任何错误并在表格中产生完全更新(Recon,总数是800)。 java中也没有错误,因为它提供了sql异常。如果没有错,中间必须有一些问题,即jconnect驱动程序或其他东西。 请帮助我,谢谢你。

2 个答案:

答案 0 :(得分:0)

旧问题,但是当我遇到相同问题时,我无法在线找到该问题的好答案。

大提示来自http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0700/html/prjdbc0700/CHDGJJIG.htm

JZ0P1 Unexpected result type.

Description: The database has returned a result that the statement cannot 
return to the application, or that the application is not expecting at this
point. This generally indicates that the application is using JDBC incorrectly
to execute the query or stored procedure. If the JDBC application is connected 
to an Open Server application, it may indicate an error in the Open Server 
application that causes the Open Server to send unexpected sequences of results.

存储过程正在返回表。不要:

PS.executeUpdate();

但是请改为执行此操作

ResultSet rs = callableStatement.executeQuery();

答案 1 :(得分:0)

对于旧的 jdbc 驱动程序,我注意到

PS.executeUpdate();

同时引发此错误

PS.execute();

没有