IBatis.NET调用Oracle存储过程几点注意的

1、调用存过必须使用传入参数,传入参数定义如下:
<parameterMaps>
    <parameterMap id="param_Pro_NewCarsAdjust" class="System.Collections.IDictionary" >
//下面两行定义需要传给数据库中存过的参数,名称和顺序需要和数据库中存过的参数一致
      <parameter property="CurDate" column="CurDate" direction="Input"/>"
      <parameter property="Maker" column="Maker" direction="Input"/>"
  </parameterMap>
...//还可定义其他存过的传入参数
  </parameterMaps>


2、ibatis中存过定义需使用<procedure></procedure>标签,并将其放在<statements></statements>标签下,如下:
<statements>
//下面定义了一个名为Pro_NewCarsAdjust的存过,与其对应的数据库中的存过是Pro_NewCarsAdjust
<procedure id="Pro_NewCarsAdjust" parameterMap="param_Pro_NewCarsAdjust" resultClass="int">
      Pro_NewCarsAdjust//数据库中定义的存过名称
    </procedure>
</statements>


3、在HELPER文件中调用存过的方法使用SelectObject,如下:


            Hashtable htParam = new Hashtable();
            htParam.Add("CurDate", CurDate);
            htParam.Add("Maker", Maker);
            this.SelectObject("Pro_NewCarsAdjust", htParam);//第一个参数为在xml文件中定义的存过名,第二个对应传入参数


4、在providers.config文件中,需要注意下面两处(以OracleClient 1.0为例):


useParameterPrefixInSql="false"
  useParameterPrefixInParameter="false"
 

   将这两个属性值设置为false,表示在传递参数时不适用前缀。否则将出现“This SQL map does not contain a MappedStatement named **”的错误。


例子:

<parameterMaps>
    <parameterMap id="param_Pro_NewCarsAdjust" class="System.Collections.IDictionary" >
      <parameter property="CurDate" column="CurDate" direction="Input"/>"
      <parameter property="Maker" column="Maker" direction="Input"/>"
     
    </parameterMap>
  </parameterMaps>

<procedure id="Pro_NewCarsAdjust" parameterMap="param_Pro_NewCarsAdjust" resultClass="int">
      Pro_NewCarsAdjust
    </procedure>



ReturnMessage retMsg = new ReturnMessage(true, "");
            Hashtable htParam = new Hashtable();
            htParam.Add("CurDate", CurDate);
            htParam.Add("Maker", Maker);
            //htParam.Add("p_Message", "新增时出现错误,请联系系统管理员!");//新增时出现错误,请联系系统管理员!

            retMsg = this.InsertWithUnCheck("Pro_NewCarsAdjust", htParam);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值