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"
<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);