×

Oracle 存储过程

调用数据库的存储过程

小星星 小星星 发表于2021-08-10 16:31:18 浏览287 评论0

抢沙发发表评论

1.在mapper.xml中调用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.mapper.XxxMapper">
	<select id="expenseSum" parameterType="java.util.Map" statementType="CALLABLE" >
		CALL packages.method(
			#{parameter1, mode=IN, jdbcType=DECIMAL},
			#{parameter2, mode=IN, jdbcType=VARCHAR},
			#{parameter3, mode=OUT, jdbcType=DECIMAL},
			#{parameter4, mode=OUT, jdbcType=VARCHAR}
		)
		
	</select>
	
</mapper>

2.在mapper.java中调用

void expenseSum(Map<String, Object> map);


3.在ServiceImpl.java中调用

			Map<String, Object> m = new HashedMap<String, Object>();
			String year = req.getParameter("YEAR");
			m.put("parameter1", new BigDecimal(year));
			m.put("parameter2",userCode);
			iExpenseSummaryMapper.expenseSum(m);
			
			if("0".equals(m.get("parameter3").toString())) {
				map.put("code", "0");
				map.put("success", true);
				map.put("msg", m.get("parameter4"));
			}else {
				map.put("code", "500");
				map.put("success", false);
				map.put("msg", m.get("parameter4"));
			}


4.Oracle中的存储过程头部

  PROCEDURE method   (    parameter1 NUMBER,
                          parameter2 VARCHAR2,
                          parameter3 OUT NUMBER,
                          parameter4 OUT VARCHAR2)


5.总结

mapper.xml中的 

packages 为Oracle数据库中Packages目录下对应的包名,method为调用存储过程的方法名
parameter1 - 4 分别对应调用的存储过程方法的参数名
mode=IN 为输入参数   mode=OUT 为输出参数(返回参数)
jdbcType 为该参数对应的数据类型


 您阅读本篇文章共花了: 

群贤毕至

访客