设为首页 收藏本站
查看: 591|回复: 0

[经验分享] ibatis调用oracle存储过程、函数

[复制链接]

尚未签到

发表于 2016-8-10 06:31:30 | 显示全部楼层 |阅读模式
  1对于全部是in 类型的参数过程,采用下面的方法调用(ibatis版本是2.3)

比如过程:

    Procedure Flashback_Op(v_table_owner Varchar2,v_table_name Varchar2,v_FlashbackScn   Number,v_xid Varchar2,v_dbid number);

调用方法:

  <parameterMap id="tableDml_recycle" class="java.util.Map">
        <parameter property="owner" jdbcType="varchar"
             javaType="java.lang.String" mode="IN " />
         <parameter property="name" jdbcType="varchar"
             javaType="java.lang.String" mode="IN " />
         <parameter property="scn" jdbcType="NUMBER"
             javaType="java.math.BigDecimal" mode="IN " />
         <parameter property="dbId" jdbcType="NUMBER"
             javaType="java.math.BigDecimal" mode="IN " />
    </parameterMap>
   
    <procedure id="tableDml_zcRecycle" parameterMap="tableDml_recycle">  
        {call TassetREC.Flashback_Op(?,?,?,?,?)}  
    </procedure>  

  2对于返回类型是游标 (OUT)的函数,采用如下方式调用。

函数:

   Function GetFirstPageNumRows(v_where varchar2,v_dbid Number,v_Numrows varchar2,v_queryid varchar2)
  
  调用方式:

  <parameterMap id="searchParam" class="java.util.Map">
        <parameter property="result" jdbcType="ORACLECURSOR"
        javaType="java.sql.ResultSet" mode="OUT " resultMap="auditselect_resultList" />
       
        <parameter property="ipAddress"
            jdbcType="varchar" javaType="java.lang.String" mode="IN" />
        <parameter property="dbId" jdbcType="NUMBER"
            javaType="java.math.BigDecimal" mode="IN"/>
        <parameter property="countNumber" jdbcType="NUMBER"
            javaType="java.lang.Integer" mode="IN"/>
        <parameter property="clientId" jdbcType="VARCHAR2"
            javaType="java.lang.String" mode="IN"/>
    </parameterMap>

 <procedure id="firstPage" parameterMap="searchParam">  
        {? = call tlgadmin.GetFirstPageNumRows(?,?,?,?)}   (注意返回值在前面用?代表)
    </procedure>

 java代码这么取值:

  @SuppressWarnings("unchecked")
    public List getAuditSelectByPages(Map map) {
        getSqlMapClientTemplate().queryForList("firstPage", map);//调用
        List arryList = (ArrayList) map.get("result");//取值
        return arryList;
    }

3对于返回值为一般数据类型的函数:

函数:

  procedureDeleteCommand(v_commandid out Number,v_commandsetid Number default 0,v_dbid Number default 0) ;

采用如下方式处理(把返回值当作出参来处理OUT):

  <parameterMap id="CommandDeleteById" class="java.util.Map">
        <parameter property="result" jdbcType="VARCHAR"
            javaType="java.lang.String" mode="OUT" />
        <parameter property="commandId" jdbcType="NUMBER"
            javaType="java.lang.Integer" mode="IN" />
        <parameter property="commandsetId" jdbcType="NUMBER"
            javaType="java.lang.Integer" mode="IN" />
        <parameter property="dbId" jdbcType="NUMBER"
            javaType="java.math.BigDecimal" mode="IN" />
    </parameterMap>

 <procedure id="Command_deleteById"
        parameterMap="CommandDeleteById">
        { ? = call truleadmin.DeleteCommand(?,?,?)}
    </procedure>

  java代码

      this.getSqlMapClientTemplate().delete("Command_deleteById", map);
        String num = (String) map.get("result");
        return num;
  注意:若存储过程执行的是查询语句,调用的方法是insert(String str,Object object); 不在用queryForObject(String str,Object object)或queryForList(String str,Object object)
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255437-1-1.html 上篇帖子: oracle创建jbpm4.4表脚本 下篇帖子: oracle 级联查询 级联求和 汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表