Springboot Mybatis调用Oracle的存储过程实例及经验

本文记录了Springboot使用Mybatis调用Oracle存储过程的经验,强调了存储过程中不能使用DDL语句和commit操作。在Dao层通过注解和Map参数实现调用,Service层则封装参数并获取返回值。
摘要由CSDN通过智能技术生成

Start

在网上找了许多,大部分没有试成功,好不容易给整成功了,记录一下。

1 存储过程

需要注意的是存储过程中,不可以使用truncate之类的DDL语句,也不要在存储过程做 commit 之类的操作

  • in 代表的入参
  • out 代表返回的参数
    这两个参数,与Mybatis传参保持一致即可。

存储过程如下:

create or replace procedure jphone_list_generate(
       v_result OUT VARCHAR2,
       v_createid IN VARCHAR2,
       v_department_group_code IN VARCHAR2, 
       v_year IN VARCHAR2, 
       v_month IN VARCHAR2, 
       v_staffcode IN VARCHAR2)
 IS 
  v_count NUMBER;
BEGIN
  
DELETE FROM jphone_data_center_tmp;
INSERT INTO jphone_data_center_tmp nologging
 SELECT a.year,a.month,a.department_group_code, a.channel, COUNT(*) call_count
FROM newcpic.jphone_data_center a
GROUP BY a.year,a.month, a.department_group_code, a.channel;

MERGE INTO newcpic.jphone_data_center a
   USING ( SELECT * FROM jphone_import_call a
             WHERE a.department_group_code = v_department_group_code 
              AND v_month >= to_char(a.vehicle_license + 15,'mm') 
              AND a.data_falg = '1' ) b
ON (a.vehicle_vin = b.vehicle_vin )
WHEN NOT MATCHED THEN
  INSERT (
     a.import_uuid,
        a.owner_name,
        a.idcard,
        a.mobilephone,
        a.address,
        a.vehicle_type,
        a.vehicle_model,
        a.vehicle_weight,
        a.vehicle_seat,
        a.vehicle_vin,
        a.vehicle_engine,
        a.vehicle_purchanse_date,
        a.vehicle_license,
        a.inception_date,
        a.planned_end_date,
        a.department_group_code,
        a.channel,
        a.staff_code,
        a.team_code,
        a.label_id,
        a.data_falg,
        a.if_recovery,
        a.year
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值