1)sqlmap.xml中的配置如下:
需要注意的事项:
a) parameterMap 中对应的属性property的值要和存储过程中的名字一样,并且对应的顺序要和存储过程中的顺序一致,
否则可能无法获取对应的返回值;
<!-- 调用packaget的存储过程的参数 -->
<parameterMap id="proProductDzProcParam" class="java.util.Map">
<parameter property="p_dzno" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />
<parameter property="p_vchtype" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="p_productclass" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="p_dptcode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
</parameterMap>
<!-- 调用package的存储过程生成单证号-->
<procedure id="proProductDzProc" parameterMap="proProductDzProcParam">
<![CDATA[
{call proddata.product_dz_proc.pd_getdzno(?,?,?,?)} //这里的{}不一定需要
]]>
</procedure>
2)java中如何调用
public String getProductDZNO(String pVchtype, String productclass, String pDptcode) throws DAOException {
try {
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("p_vchtype", pVchtype);
paramMap.put("p_productclass", productclass);
paramMap.put("p_dptcode", pDptcode);
paramMap.put("p_dzno", null);
super._queryForObject("proProductDzProc", paramMap);
return paramMap.get("p_dzno");
} catch (Exception e) {
String error = "生成单证号出错";
LogUtil.error(e, this.getClass().getName(), "getProductDZNO", e.getMessage(), error);
throw new DAOException(error);
}
}