这是我的自定义函数:
create or replace function wquery.fn_get_orderlist(invarpid       varchar2,
                                            invarstartTime varchar2,
                                            invarendTime   varchar2,
                                            invarorderId   varchar2,
                                            invardealId    varchar2,
                                            inintpageNo    integer default 1,
                                            inintpageSize  integer default 30,
                                            outintrowcnt   out integer,
                                            outcurlist     out sys_refcursor)
  return integer isbegin
  open outcurlist for
    select 1 from dual;
  case
    when invarpid is null then
      return - 1;
    when invarstartTime is null and invarendTime is null and
         invarorderId is null and invardealId is null then
      return - 1;
    else
      null;
  end case;  ---返回总数量
  select count(1)
    into outintrowcnt
    from wops.t_transaction_order z, wops.t_order_b2c_extra_info b
   where b.partner_id = invarpid
     and (b.trade_id = invarorderId or invarorderId is null)
     and (z.id = invardealId or invardealId is null)
     and z.id = b.id
     and (z.created_time >= to_date(invarstartTime, 'yyyymmddhh24miss') or
         invarstartTime is null)
     and (z.created_time < to_date(invarendTime, 'yyyymmddhh24miss') or
         invarendTime is null);  --返回条目
  open outcurlist for
    select (select stragg(to_char(t.created_time, 'yyyymmddhh24miss') || ':' ||
                          current_status || ':' || order_amount || ':' ||
                          receivable_fee || ':' ||
                          to_char(sharing_time, 'yyyymmddhh24miss') || ':' ||
                          sharing_seq_id) 
              from wops.t_transaction_order t, wops.t_async_sharing_info a
             where t.id = a.id(+)
               and t.parent_business_id = z.business_id) suborders,
           z.*
      from (select *
              from (select z.*, rownum rn
                      from (select b.trade_id, b.partner_id, z.*
                              from wops.t_transaction_order    z,
                                   wops.t_order_b2c_extra_info b
                             where b.partner_id = invarpid
                               and (b.trade_id = invarorderId or
                                   invarorderId is null)
                               and (z.id = invardealId or invardealId is null)
                               and z.id = b.id
                               and (z.created_time >=
                                   to_date(invarstartTime, 'yyyymmddhh24miss') or
                                   invarstartTime is null)
                               and (z.created_time <
                                   to_date(invarendTime, 'yyyymmddhh24miss') or
                                   invarendTime is null)
                             order by z.created_time) z)
             where rn > inintpageSize * (inintpageNo - 1)
               and rn > inintpageSize * inintpageNo) z;  return 0;
end fn_get_orderlist;
/
请问我用mybatis怎么进行调用返回MyBatisselect函数

解决方案 »

  1.   

    <select id="..." parameterType="..." resultType="..."  >
       select  wquery.fn_get_orderlist(参数) as result from dual
    </select>
      

  2.   

    用ibatis调用过存储过程  不知道是不是一个原理
       <parameterMap id="pm_user_info" class="java.util.Map">
           <parameter property="acdGroup" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="mobilePhone" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="email" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="themes" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="state" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="gender" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="memo" javaType="String" jdbcType="varchar2" mode="IN"/>
           <parameter property="regDate" javaType="String" jdbcType="varchar2" mode="IN"/>
        </parameterMap>

        <procedure id="proc_add_user_bcaUser" parameterMap="pm_user_info" resultClass="int">
           {call proc_add_user_bcaUser(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
        </procedure>