一.调用存储过程
1.首先在数据库中定义存储过程,定义的存储过程的代码如下:
CREATE OR REPLACE PROCEDURE SJTB_SJ.P_SJTB_ALL( V_DJXH IN NUMBER,
V_KSSJ IN DATE,
V_JSSJ IN DATE,
V_SWJG IN VARCHAR2,
V_MBGX IN NUMBER,
V_XH IN PLS_INTEGER
V_RETURNVALUE OUT INT) IS
/*@
****************************************************************
*过程名称 --%@NAME: P_SJTB_ALL
*过程描述 --%@COMMENT: 数据采集(一段时间内)
*作者 --%@CREATOR: Liuxiao
*参数 --%@PARAM: V_DELETE 删除标志 V_KSSJ 开始时间 V_JSSJ 结束时间 V_XH 从第几部开始执行
*创建日期 --%@CREATED_TIME: 2019/3/19
*修改日期 --%@MODIFY_TIME:
*数据来源 --%@FROM: 核心征管信息
******************************************************************
@*/
V_LOG_SN VARCHAR2(20);--序号
V_PROCNAME VARCHAR2(40) :='P_SJTB_ALL';--内容名称
V_PROCDESC VARCHAR2(100) :='核心征管数据整理';--内容描述
V_RETINFO VARCHAR2(100);--异常说明
V_PROC_RESULT VARCHAR2(20);--执行结果
BEGIN
V_RETURNVALUE:=1;
V_LOG_SN := TO_CHAR( SYSTIMESTAMP, 'YYMMDDHH24MISSFF3' );--开始记录插入日志
P_SJTB_INSERT_LOG( V_LOG_SN,V_PROCNAME, V_PROCDESC,NULL, NULL,NULL, NULL ); --插入日志
V_PROC_RESULT := 'SUCCESS';
V_LOG_SN := TO_CHAR( SYSTIMESTAMP, 'YYMMDDHH24MISSFF3' );--开始记录插入日志
P_SJTB_INSERT_LOG( V_LOG_SN, V_PROCNAME, V_PROCDESC,V_PROC_RESULT, NULL,NULL, NULL ); --插入日志
EXCEPTION
WHEN OTHERS THEN
--DBMS_OUTPUT.put_line(SQLERRM);
ROLLBACK;--异常回滚
V_RETURNVALUE:=0;
V_RETINFO := SQLERRM;--记录错误说明
P_SJTB_INSERT_LOG( V_LOG_SN, V_PROCNAME, V_PROCDESC, 'FAIL', V_RETINFO, NULL , NULL );
END;
2.通过接口映射Sql,定义接口
package com.inspur.tax.sst.bgsj.dao;
import java.util.List;
import java.util.Map;
public interface SstMapper {
// 调取蜀税通跳板机存储过程调度
public Integer call_P_SJTB_ALL(Map<String, Object> paramMap);
}
3.定义映射文件
<?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.inspur.tax.sst.bgsj.dao.SstMapper">
<parameterMap type="java.util.Map" id="texuChangeMap">
<parameter property="V_DJXH" jdbcType="VARCHAR" mode="IN"/>
<parameter property="V_KSSJ" jdbcType="DATE" mode="IN"/>
<parameter property="V_JSSJ" jdbcType="DATE" mode="IN"/>
<parameter property="V_SWJG" jdbcType="VARCHAR" mode="IN"/>
<parameter property="V_MBGX" jdbcType="NUMERIC" mode="IN"/>
<parameter property="V_XH" jdbcType="INTEGER" mode="IN"/>
<parameter property="V_RETURNVALUE" jdbcType="INTEGER" mode="OUT"/>
</parameterMap>
<select id="call_P_SJTB_ALL" parameterMap="texuChangeMap" statementType="CALLABLE" resultType="java.lang.Integer">
{call P_SJTB_ALL(
?,?,?,?,?,?,?
)}
</select>
<!--
定义存储过程
<select id="call_P_SJTB_ALL" parameterType="map" statementType="CALLABLE" >
{
call P_SJTB_ALL(
#{V_DJXH,mode=IN,jdbcType=VARCHAR},
#{V_KSSJ,mode=IN,jdbcType=DATE},
#{V_JSSJ,mode=OUT,jdbcType=DATE},
#{V_SWJG,mode=IN,jdbcType=VARCHAR},
#{V_MBGX,mode=IN,jdbcType=VARCHAR},
#{V_XH,mode=IN,jdbcType=INTEGER},
#{V_RETURNVALUE,mode=out,jdbcType=INTEGER}
)
}
</select>
-->
</mapper>
4.调用
---service层
package com.inspur.tax.sst.bgsj.service.impl;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.inspur.tax.sst.bgsj.dao.SstMapper;
import com.inspur.tax.sst.bgsj.service.ISstTBService;
@Service("sstTBService")
public class SstTBServiceImpl implements ISstTBService {
@Autowired
private SstMapper sstMapper;
// 调用蜀税通跳板机存储过程
public Integer call_P_SJTB_ALL(Map<String, Object> paramMap){
sstMapper.call_P_SJTB_ALL(paramMap);
Integer returnValue = (Integer) paramMap.get("V_RETURNVALUE");
return returnValue;
}
}
--Controller
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("V_DJXH", dataMap.get("djxh"));
paramMap.put("V_MBGX", 1);
paramMap.put("V_XH", 1);
Integer flag = 0;
flag = sstTBService.call_P_SJTB_ALL(paramMap);
if(flag == 1){
System.out.println("888888888888888888888888888888888");
}