3

一段时间以来,我一直在为此努力。

我正在使用 iBatis 和我的 JAVA 代码来运行位于 Sybase DB 中的存储过程。

存储过程需要一些参数。其中很少有人被宣布为VARCHAR (6)

所以在我的 iBatis 映射中,我对这些参数做了以下操作。

<parameter property="searchUserId" jdbcType="String" javaType="java.lang.String" mode="IN"/>

但是,当我这样做时,会出现以下错误。

--- Check the statement (update procedure failed).  
--- Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.
Caused by: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.

所以我将映射更改为:

<parameter property="searchUserId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>

它消除了上面的错误,但是,现在参数searchUserId正在获取null传递给 SP 的值。我确定从我的 java 代码中我没有通过null

有人遇到过这个问题吗?我应该将映射更改为什么?

4

3 回答 3

2

我遇到这个问题的原因不同:该表中有一个geometry(PostGIS 扩展)列,我猜驱动程序无法解析。删除该列使其工作。

于 2017-01-14T18:25:45.880 回答
1

在更改为使用 VARCHAR 作为 jdbcType 之后,您的参数元素看起来不错。您能否包含映射文件中的其余参数元素和过程元素,以及创建参数映射和调用查询的代码?

在构建传递给查询的地图时,它可能很简单,比如一个错字(至少这是我会犯的那种错误——我知道我在使用 Ibatis 时对“userId”的大写不一致)。

于 2009-12-23T20:54:02.633 回答
0

我也遇到过类似的情况。经过大量搜索,最后我发现我的问题的答案是我在构建地图时丢失了一个特定的“键”。我错过了一个声明:

map.put("job_name", job.getJobName());

& 我在 CronMapper.xml 中使用 JOB_NAME=#{job_name}

还有一些我在其他地方使用 JOB_NAME=#{jobName}

于 2015-12-11T10:14:00.793 回答