今天在使用oracle过程中遇到一个奇怪的问题
相同的查询语句,一种采用绑定参数方式查询,一种采用写死的sql语句执行,执行结果不一致

select t.*, c.CP_NAME as CP_NAME
  
from (select *
          
from (select row_.*, rownum rownum_
                  
from (select *
                          
from (select *
                                  
from sp_biz_code_order order by order_id)
                         start 
with PARENT_ID = 0
                        connect 
by PRIOR ORDER_ID = PARENT_ID) row_
                 
where rownum <= :1)
         
where rownum_ >:2) t,
       sp_biz_contentprovider c
 
where t.CPID = c.CP_ID(+)
 
order by rownum_

当将:1 和:2处的参数写死后(80:100)执行得到的结果和绑定参数下查询的结果完全不一致
查看执行计划发现两者的执行计划有很多不一样的地方

问题解决方式较为简单
将ibatis的内联参数改为外联参数即可,问题的根源待咨询oracle后再做解答