今天在用ibatis执行查询时,报下面错误:
Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1;
不知道什么原因,网上搜索了一下,好像是传参数的问题。我的sqlmap文件如下:
sql 代码
- <select id="advancedQuery" parameterClass="java.lang.String" resultMap="GrantLogResult">
- SELECT t1.*,t2.user_name as accreditor_user_name,
- t2.real_name as accreditor_real_name,t3.name as role_name
- FROM(
- $value$
- )t1, user_basic_info t2, role_info t3
- WHERE t2.id(+)=t1.accreditor
- AND t3.id(+)=t1.grant_role
- </select>
然后传的参数是一条select语句,格式大概如下:
sql 代码
- select * from authorization_info
- where authorize_time between t1 and t2
- order by authorize_time desc
t1 和 t2是程序生成的Timestamp类型的值。
搞了半天之后,问题依旧,没有办法之下,改变了传入参数的select语句写法,如下:
sql 代码
- select * from authorization_info
- where to_char(authorize_time,'yyyy-MM-dd') >= 't1'
- and to_char(authorize_time,'yyyy-MM-dd') <='t2'
- order by authorize_time desc
这样写了之后问题解决了,但是还是不知道其中的原因。