存储过程中由于业务原因,游标结果中返回的列数不定。后台用的ibatis,不知道怎么配置。
ibatis配置代码:
<resultMap id="wsCheckVerifyInfoRstMap" class="java.util.HashMap">
<result property="channel" column="channel" />
<result property="pj_mobile" column="pj_mobile" />
</resultMap>
<parameterMap id="wsCheckVerifyInfoMap" class="map">
<parameter property="acc" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="out_tHeadCursor" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="wsStatusAndMsgRstMap"/>
<parameter property="out_tDetailCursor" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="wsCheckVerifyInfoRstMap"/>
</parameterMap>
<procedure id="queryWsCheckVerifyInfo" parameterMap="wsCheckVerifyInfoMap">
<![CDATA[
call pkg_itboc_casr0ca0.p_GetStampFailure(?,?,?)
]]>
</procedure>
存储过程代码段:
if nCountVerify > 0 and nCountFinance > 0 then
v_sSql := ' select 2,t.channel,pj_mobile,fin_mobile from dzdhz_rel t where acc = '''||p_sAccNo||''' and t.channel != 1 and rownum < 2';
open out_tDetailCursor for v_sSql ;
elsif nCountVerify > 0 then
v_sSql := ' select 1,t.channel,pj_mobile from dzdhz_rel t where acc = '''||p_sAccNo||''' and t.channel != 1 and rownum < 2';
open out_tDetailCursor for v_sSql ;
elsif nCountFinance > 0 then
v_sSql := ' select 1,t.channel,fin_mobile from dzdhz_rel t where acc = '''||p_sAccNo||''' and t.channel != 1 and rownum < 2';
open out_tDetailCursor for v_sSql ;
else
v_sSql := ' select 0,t.channel,pj_mobile,fin_mobile from dzdhz_rel t where acc = '''||p_sAccNo||''' and t.channel != 1 and rownum < 2';
open out_tDetailCursor for v_sSql;
end if;
有些sql中多了fin_mobile,在ibatis中怎么配置才可以通过?