文档章节

MySQL存储过程示例

LUKE1993
 LUKE1993
发布于 2017/03/20 15:37
字数 264
阅读 9
收藏 2

-- MySQL存储过程示例

DELIMITER $$

CREATE PROCEDURE cancelBack ()
BEGIN
    -- 声明变量
    DECLARE temp_id INT;
    DECLARE temp_univ_code VARCHAR(50);
    DECLARE temp_term_code VARCHAR(50);
    DECLARE temp_stu_code VARCHAR(100);
    DECLARE temp_tm_code VARCHAR(100);
    DECLARE temp_unsub_count INT(11);
    DECLARE temp_unsub_amount DOUBLE;
    -- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;
    -- 定义游标
    DECLARE cur_uad CURSOR FOR SELECT id, univ_code, term_code, stu_code, tm_code, unsub_count,unsub_amount FROM unsub_apply_detail WHERE univ_code = '10596' AND state > 0 AND is_delete = 0;
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

   -- 打开游标
   OPEN cur_uad;

  -- 遍历游标
  cur_uad_loop:
   LOOP
      -- 取值 取多个字段
      FETCH NEXT FROM cur_uad
           INTO temp_id,
                temp_univ_code,
                temp_term_code,
                temp_stu_code,
                temp_tm_code,
                temp_unsub_count,
                temp_unsub_amount;

      IF done
      THEN
         LEAVE cur_uad_loop;
      END IF;

      -- 定义操作:
      -- 1.修改unsub_apply_detail表的审核状态:
      UPDATE unsub_apply_detail uad
      SET uad.update_time = DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'),
          uad.state = 0
      WHERE uad.id = temp_id;

      -- 2.修改distbook_order_stu_detail表:
      UPDATE distbook_order_stu_detail dosd
      SET dosd.unsub_money_state =
             IF(
                dosd.unsub_amount + temp_unsub_amount >=
                   dosd.has_pay_amount,
                1,
                2),
          dosd.unsub_tm_state =
             IF(dosd.unsub_count + temp_unsub_count >= dosd.order_count,
                1,
                2),
          dosd.unsub_count = dosd.unsub_count + temp_unsub_count,
          dosd.unsub_amount = dosd.unsub_amount + temp_unsub_amount,
          dosd.update_time = DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')
      WHERE     dosd.univ_code = temp_univ_code
            AND dosd.term_code = temp_term_code
            AND dosd.stu_code = temp_stu_code
            AND dosd.tm_code = temp_tm_code
            AND dosd.is_to_trader = 1
            AND dosd.is_to_send = 1
            AND dosd.is_delete = 0
            AND dosd.state IN (0, 3, 4);
   END LOOP;

   CLOSE cur_uad;
END
$$

DELIMITER ;

-- 调用存储过程
CALL cancelBack();

© 著作权归作者所有

LUKE1993
粉丝 2
博文 38
码字总数 36342
作品 0
广州
架构师
私信 提问
创建带 IN 和 OUT 参数的 MySQL 存储过程

在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制 MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做...

oschina
2013/03/12
11.6K
7
数据库-mysql用户权限和管理

一、Mysql权限列表 二、Mysql用户权限管理操作 1. 权限查询: (1)查看mysql的所有用户及其权限: select * from mysql.userG; #(格式化显示) (2)查看当前mysql用户权限: show grants;...

羊草
2018/08/16
0
0
九、MySQL存储过程和函数

存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。 9.1、创建存储过程和函数 存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别是...

运维菜鸟丶
2017/08/04
0
0
mysql存储过程整理

1、存储过程的简介: 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用...

世界和平维护者
2016/10/16
50
0
mysql的数据储存过程入门小结

Mysql是网站里最常用的数据库(LNMP组合)。这里总结下Mysql命令行的使用同时简单介绍下mysql储存过程做个入门介绍。 1.Linux登录mysql的语法格式 mysql -h IP -u username -p 因为在本机上,...

熊猫88
2015/12/31
116
0

没有更多内容

加载失败,请刷新页面

加载更多

如何快速为网站选择合适的SSL证书

随着HTTPS普及,越来越多用户开始采用SSL证书,来对HTTP进行加密,升级到HTTPS。但面对各种不同的SSL证书,用户应如何选择?安信SSL证书将为大家讲解: 一、按SSL证书类型选择 DV SSL证书:域...

安信证书
12分钟前
1
0
被嫌弃的eval和with

本文转载于:专业的前端网站➥被嫌弃的eval和with 前面的话   eval和with经常被嫌弃,好像它们的存在就是错误。在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被...

前端老手
15分钟前
1
0
Allegro非常实用的快捷键-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
22分钟前
1
0
润乾报表与 ActiveReport JS 功能对比

简介 润乾报表是用于报表制作的大型企业级报表软件,核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表...

泡泡糖儿
23分钟前
1
0
仿微信打飞机游戏网页版,基于cocos2d-js游戏引擎,在线试玩,内含源码

早几年研究cocos2d的demo项目,这个是基于cocos2d-js游戏引擎,整个游戏用js编写。 玩法:鼠标拖动飞机移动即可 试玩地址 源码地址 游戏截图: 文件说明 cocos2dx:游戏引擎 res:存放游戏素...

tanghc
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部