mysql 存储过程 执行成功_Mysql执行存储过程,32位可以成功,64位执行失败

Win2008 , MySQL 5.7

base_product :70w行数据

txnrack :140w行数据

结果insert是:140w行数据

同样的数据库结构,在32位上执行成功, 在64位上执行失败。

更郁闷的是,把sql直接在64位上执行也能成功, 放在存储过程里就不能成功。

哪位大神给看看!

CREATE PROCEDURE `sp_abc`(IN `stockInfoNumber` varchar(50))

BEGIN

DECLARE startDateStr VARCHAR(14) DEFAULT '20100101000000';

DECLARE createDateStr VARCHAR(14);

DECLARE warehouse_code VARCHAR(50);

DECLARE t_error INTEGER DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;

START TRANSACTION;

select history_create_date_str into startDateStr from stock_info si where result_confirm='已确认' ORDER BY si.result_apv_date limit 1;

select history_create_date_str into createDateStr from stock_info si where stock_info_number = stockInfoNumber;

select warehouse into warehouse_code from stock_info si where stock_info_number = stockInfoNumber;

DELETE FROM stock_history WHERE stock_info_number = stockInfoNumber;

insert into stock_history (

stock_history_d_id,

stock_info_number,

create_date,

warehouse,

rack_code,

plucode,

title,

qty)

SELECT

CONCAT(SUBSTR(createDateStr, 3, 6) ,tx.rack_code, tx.plucode),

stockInfoNumber,

createDateStr,

warehouse_code,

tx.rack_code,

tx.plucode,

bp.title,

ifnull(ttr.qty, 0) qty

FROM

base_product bp LEFT JOIN txnrack tx on bp.plucode = tx.plucode

LEFT JOIN

(SELECT tt.rack_code, tt.plucode, sum(tt.qty) qty FROM (

SELECT sr.rack_code, sr.plucode, sr.qty FROM stock_result sr WHERE sr.apv_date = startDateStr

UNION ALL

SELECT rd.torack rack_code, rd.plucode, sum(rd.qty) qty FROM receive_d rd WHERE rd.receive_detail_state = '已确认' and rd.apv_date >= startDateStr and rd.apv_date <= createDateStr group by rd.torack,rd.plucode

UNION ALL

SELECT smd.fromrack as rack_code, smd.plucode, sum(smd.qty) * -1 qty FROM stock_move_d smd group by smd.fromrack,smd.plucode

UNION ALL

SELECT sd.rack_code, sd.plucode, sum(sd.qty) * -1 qty FROM sale_d sd WHERE sd.sale_detail_state = '已确认' group by sd.rack_code,sd.plucode

) tt GROUP BY tt.rack_code, tt.plucode) ttr ON tx.rack_code = ttr.rack_code AND tx.plucode = ttr.plucode;

IF t_error = 1 THEN

ROLLBACK;

ELSE

COMMIT;

END IF;

select t_error;

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值