CREATE DEFINER=`root`@`%` PROCEDURE `vir`.`task_payment_byonlinedown`()
begin
declare _mobile varchar(12) ;
declare _amount decimal(18,4) default 0;
declare _reduce_amount decimal(18,4) default 0;
declare _is_part varchar(12) ;
declare _excute_status varchar(12) ;
declare stop_flag int DEFAULT 0;
declare _app_id varchar(100);
declare _bill_status varchar(12);
declare _app_status varchar(12);
declare _REDUCE_AMOUNT_temp decimal(18,4) default 0;
declare cur1 cursor for select mobile,amount,reduce_amount,is_part,excute_status from task_payment_byonlinedown where excute_status=1;
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;
open cur1;
fetch cur1 into _mobile,_amount,_reduce_amount,_is_part,_excute_status;#读取数据到游标
while stop_flag<>1 DO#若游标有下一条记录,循环
select apply_id,REDUCE_AMOUNT into _app_id,_REDUCE_AMOUNT_temp from vir.biz_bill where mobile=_mobile order by create_date desc limit 1;

#部分还款
if(_is_part='0') then
set _app_status =11 ;
set _bill_status=3;
end if;
#全部还款
if(_is_part='1') then
set _app_status =8;
set _bill_status=1;
end if;

#1 biz_apply
UPDATE biz_apply set APPLY_STATUS=_app_status WHERE id = _app_id;

#2 biz_bill
UPDATE biz_bill set
LATE_REPAYMENT_DATE=sysdate(),
LATE_REPQYMENT_AMOUNT=_amount,
REAL_TOTAL_AMOUNT=_amount,
BILL_STATUS=_bill_status,
SETTLE_DATE=sysdate(),
REDUCE_AMOUNT = _REDUCE_AMOUNT_temp+_reduce_amount,
DEMO2 = concat('appid','_',_app_id,'_对公还款_支付宝_还款金额_',_amount,'_减免金额_',_reduce_amount,'_还款时间_',sysdate())
WHERE APPLY_ID = _app_id;

#3 BIZ_REDUCE
insert into BIZ_REDUCE (id,APPLY_ID,REDUCE_TOTAL_AMOUNT,CREATE_DATE) values
( CONVERT(substring(CAST(rand() as char),3, length(CAST(rand() as char))) ,SIGNED),_app_id ,_amount ,sysdate());

update task_payment_byonlinedown set excute_status=0 where excute_status=1 and mobile=_mobile;
fetch cur1 into _mobile,_amount,_reduce_amount,_is_part,_excute_status;
end while;
close cur1;
END

mysql存储过程,游标实例的更多相关文章

  1. MySQL存储过程使用实例详解

    本文介绍关于在MySQL存储过程游标使用实例,包括简单游标使用与游标循环跳出等方法 例1.一个简单存储过程游标实例 DROP PROCEDURE IF EXISTS getUserInfo $$CRE ...

  2. MySQL存储过程 游标

    MySQL存储过程  游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...

  3. mysql存储过程游标嵌套循环

    自己写的一个mysql存储过程如下: BEGIN DECLARE _did bigint(20);DECLARE _count int;DECLARE s1 int;DECLARE cur_1 CUR ...

  4. MySQL 存储过程/游标/事务

    将会用到的几个表 mysql> DESC products; +------------+--------------+------+-----+---------+-------------- ...

  5. php调用mysql存储过程游标

    <?php $dbtype = 'mysql'; $host = 'localhost'; $dbname = 'test'; $dsn = "$dbtype:host=$host;d ...

  6. mysql存储过程游标加计划任务事件调度器

    存储过程加事件调度器 -- 存储过程 (多个)游标的使用 临时表的使用(让执行时间从一个小时降低到5分钟)DELIMITER $$ DROP PROCEDURE IF EXISTS `eval_cal ...

  7. mysql 存储过程 游标嵌套

    基本表temp 包括 name, type, sendCity, getCity 分别对应物流送货司机名, 倒车的第几段, 发货城市, 收货城市 表结构 -- -------------------- ...

  8. mysql 存储过程简单实例

    一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...

  9. MySql存储过程简单实例

    转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 ************************ ...

  10. MySQL 存储过程游标

    一.创建游标 游标用declare语句创建.如下面的例子所示: create procedure test2() begin declare cursorTest cursor for select ...

随机推荐

  1. select,poll,epoll之间的区别

    (1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替.而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替, ...

  2. VS2008 LINK : fatal error LNK1104: cannot open file 'atls.lib'错误解决方案

    用VS 2008编写ATL的64位应用程序时,提示链接错误:VS2008 LINK : fatal error LNK1104: cannot open file 'atls.lib' 问题原因 VS ...

  3. RenderPartial和RenderAction区别

    本篇参考了Shailendra Chauhan和 Jag Reehal的博文. RenderParital和RenderAction的共同点: ※ 都能返回部分视图 ※ 返回的部分视图和主视图共用一个 ...

  4. Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式

    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BA ...

  5. DroidGap

    import com.phonegap.DroidGap;       import android.app.Activity;   import android.os.Bundle;       p ...

  6. jQuery - 同时添加click和dblclick事件

    添加事件的代码比较简单,有两种方法: $("abc").bind({"click":fn,"dblclick":fn}); $(" ...

  7. Tomcat中session的管理机制

    1.       请求过程中的session操作: 简述:在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中.然后再从 request获取s ...

  8. 两种方法获取MyBatis刚刚插入的id

    主要就是在xml文件中的写法,其他省略 方法一: <insert id="insert" parameterType="com.xxx.xxxx.pojo.User ...

  9. App.config和Web.config配置文件的配置节点的解析

    前言 在http://www.cnblogs.com/aehyok/p/3558661.html这篇博文中,大致对配置文件有了初步的了解,并且在文中有提到过<appSettings>和&l ...

  10. 《Linux系统编程(第2版)》

    <Linux系统编程(第2版)> 基本信息 作者: (美)Robert Love 译者: 祝洪凯 李妹芳 付途 出版社:人民邮电出版社 ISBN:9787115346353 上架时间:20 ...