BEGIN
DECLARE customerId Long;#客户ID
DECLARE totalBuy LONG;#当前购买产品数
DECLARE cumTotalBuy LONG;#累计购买产品数
DECLARE redemptionPro LONG;#已到期赎回产品数
DECLARE expiredPro LONG;#当天到期产品数
DECLARE witAmount double(18,6) DEFAULT 0;#申请提现金额
DECLARE assetsid long;
## DECLARE reqredeemAmount double(18,6) ;#申请赎回金额
DECLARE reqredeemPro LONG;#申请赎回数量
DECLARE done INT DEFAULT 0;#游标执行标识符
DECLARE buyRecordId LONG;#客户购买记录ID
DECLARE v_err_op VARCHAR(1); #异常信息标识符
DECLARE v_err_msg VARCHAR(255); #错误信息
DECLARE cur_buyRecord cursor for select customer.id,customer.BUY_RECORD_ID,ASSETS_ID from T_CUSTOM customer,T_BIND_BANK custbank
where customer.BIND_BANK_ID = custbank.ID ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
open cur_buyRecord;
loop_curBuyRecord:loop
FETCH cur_buyRecord INTO customerId,buyRecordId,assetsid;
if done=1 then
leave loop_curBuyRecord;
end if;
##########################################当前购买产品数###########################################################
SELECT IFNULL(COUNT(*),0) INTO totalBuy FROM T_TRAN_RECORDS WHERE TRADE_TYPE='CUSTOMBOUGHY' AND CUSTOM_ID=customerId;
##########################################累计购买产品数###########################################################
SELECT IFNULL(COUNT(*),0) INTO cumTotalBuy FROM T_TRAN_RECORDS WHERE ( TRADE_TYPE='CUSTOMBOUGHY' OR TRADE_TYPE='CUSTOMERREQREDEEM' or TRADE_TYPE='CUSTOMERREDEEM') AND CUSTOM_ID=customerId;
##########################################已到期赎回产品数###########################################################
SELECT IFNULL(COUNT(*),0) INTO redemptionPro FROM T_TRAN_RECORDS WHERE TRADE_TYPE='CUSTOMERREDEEM' AND CUSTOM_ID=customerId;
##########################################当天到期产品数###########################################################
SELECT IFNULL(COUNT(*),0) INTO expiredPro FROM T_TRAN_RECORDS tran,T_PRODUCT p WHERE p.PROD_TYPE_ID = 1 and p.DEADLIME=To_Days(NOW())-To_Days(tran.OCC_DATE) and tran.PRODUCT_ID=p.ID and tran.CUSTOM_ID =customerId and tran.TRADE_TYPE='CUSTOMBOUGHY';
##########################################申请提现金额#############################################################
SELECT SUM(IFNULL(TRADE_AMOUNT,0)) INTO witAmount FROM T_TRAN_RECORDS WHERE TRADE_TYPE='CUSTOMERREQWITHDRAW' AND CUSTOM_ID=customerId and ( WITHDRAWFLAG = '0' or WITHDRAWFLAG is null ) ;
##########################################申请赎回金额#####################################################
##SELECT SUM(IFNULL(TRADE_AMOUNT,0)) INTO reqredeemAmount FROM T_TRAN_RECORDS WHERE TRADE_TYPE='CUSTOMERREQREDEEM' AND CUSTOM_ID=customerId;
##########################################申请赎回数量##########################################
SELECT IFNULL(COUNT(*),0) INTO reqredeemPro FROM T_TRAN_RECORDS WHERE TRADE_TYPE='CUSTOMERREQREDEEM' AND CUSTOM_ID=customerId;
###################################################witAmount如果交易表中状态是提现 ,那么 资材表的 闲置金额 以及总资产 减去 提现金额
if witAmount > 0 then
update T_CUSTOM_ASSETS set TOTAL_AMOUNT = TOTAL_AMOUNT - witAmount ,ASSETS_AMOUNT = ASSETS_AMOUNT - witAmount
where T_CUSTOM_ASSETS.ID = assetsid ;
update T_TRAN_RECORDS set T_TRAN_RECORDS.WITHDRAWFLAG = '1' WHERE T_TRAN_RECORDS.TRADE_TYPE='CUSTOMERREQWITHDRAW' AND T_TRAN_RECORDS.CUSTOM_ID=customerId;
end if;
######################################################
#验证用户购买记录信息是否存在
if ISNULL( expiredPro) THEN
SET expiredPro=0;
END IF;
if ISNULL( witAmount) THEN
SET witAmount=0;
END IF;
/*
if ISNULL( reqredeemAmount) THEN
SET reqredeemAmount=0;
END IF;
*/
if ISNULL(buyRecordId) THEN
set v_err_msg = 'insert';
INSERT into T_CUSTOM_BUY_RECORD(TOTAL_BUY,CUM_TOTAL_BUY,REDEMPTION_PRO,EXPIRED_PRO,WIT_AMOUNT,REQREDEEM_PRO,UPDATE_DATE)
VALUES(totalBuy,cumTotalBuy,redemptionPro,expiredPro,witAmount,reqredeemPro,NOW());
SELECT max(id) into buyRecordId from T_CUSTOM_BUY_RECORD;
UPDATE T_CUSTOM SET BUY_RECORD_ID=buyRecordId where ID = customerId;
ELSE
set v_err_msg = 'update';
UPDATE T_CUSTOM_BUY_RECORD set TOTAL_BUY=totalBuy,
CUM_TOTAL_BUY=cumTotalBuy,
REDEMPTION_PRO=redemptionPro,
EXPIRED_PRO=expiredPro,
WIT_AMOUNT=witAmount,
REQREDEEM_PRO=reqredeemPro,
UPDATE_DATE=NOW()
where ID=buyRecordId;
END IF;
commit;
END loop;
CLOSE cur_buyRecord;
END
分享到:
相关推荐
主要介绍了mysql存储过程之返回多个值的方法,结合实例形式分析了mysql存储过程返回多个值的实现方法与PHP调用技巧,需要的朋友可以参考下
主要给大家介绍了关于MySQL自定义函数和存储过程的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
MySQL触发器、存储过程、自定义函数、视图简单示例
JDBC调用mysql存储过程 很简单 很实用。。。。。。
数据库备份的存储过程,创建一个备份库,表自动搜索和复制,可以自定义要备份的表
在MySQL 入门教程中,我们能够看到很多关于如何创建储存过程 和如何利用 IN 和 OUT 参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法。这些示例已在 MySQL 5.5 中...
本文实例讲述了MySQL自定义函数用法。分享给大家供大家参考,具体如下: 先来一个简单的,创建一个函数将’2009-06-23 00:00:00’这样格式的datetime时间转化为’2009年6月23日0时0分0秒’这样的格式: DELIMITER $...
本篇文章是对mysql创建自定义函数与存储过程进行了详细的分析介绍,需要的朋友参考下
阅读实验教材《SQL Server 2012数据库管理与开发》第137页到155页的内容,掌握存储过程的概念、了解存储过程的类别(系统存储过程,用户自定义存储过程,扩展存储过程);掌握存储过程的建立;掌握存储过程的两种...
本文实例讲述了mysql自定义函数原理与用法。分享给大家供大家参考,具体如下: 本文内容: 什么是函数 函数的创建 函数的调用 函数的查看 函数的修改 函数的删除 首发日期:2018-04-18 什么是函数: 函数...
一、变量的定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]
主要介绍了利用mysql实现的雪花算法案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
存储过程教程 目录 1.sql存储过程概述 2.SQL存储过程创建 3.sql存储过程及应用 ...SQL Server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。 存储过程的概念
存储过程 in参数 的使用 IN参数只用来向过程传递信息,为默认值。 -- 存储过程中 in 参数的 使用 DELIMITER ;; CREATE PROCEDURE name_in(IN `time` VARCHAR(50)) BEGIN SELECT NOW() ,`time`; END ;; CALL name_in...
1.3.1、存储过程的优点:1.3.2、存储过程 与 函数 的区别二、自定义函数 udf(user-defined function )2.1、自定义函数 udf2.2、示例2.2.1、 无参数的自定义函数2.2.2、有参数的自定义函数三、复合结构3.1、语法格式...
本文实例讲述了mysql创建存储过程实现往数据表中新增字段的方法。分享给大家供大家参考,具体如下: 需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作;若该字段不存在,则新增) 百度了n久,...
存储函数不同于存储过程,它有返回值,需要有RETURN语句 输入任意三个数,结果输出它们的最小值 DELIMITER $$ ## 创建存储函数smin CREATE FUNCTION `sj`.`smin`(i INT,j INT,k INT) RETURNS INT BEGIN DECLARE
百度坐标,84坐标,gjc02坐标系之间的转换函数