mysql自定义函数统计订单状态:GET_ORDER_STATUS()
DELIMITER $$
USE `local_hnyz`$$
DROP FUNCTION IF EXISTS `GET_ORDER_STATUS`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `GET_ORDER_STATUS`(orderId VARCHAR(64)) RETURNS TINYINT-- varchar(64) CHARSET utf8
BEGIN
DECLARE seal_status VARCHAR(1) DEFAULT '';
DECLARE seal_total INT DEFAULT 0;-- 印章总数
DECLARE statu_cj INT DEFAULT 0;-- 承接数
DECLARE statu_zz INT DEFAULT 0;-- 制作数
DECLARE statu_jf INT DEFAULT 0;-- 交付数
DECLARE done INT DEFAULT 0;
DECLARE order_cancel_status TINYINT DEFAULT 0;-- 订单撤销状态
-- declare _err int default 0;
DECLARE cur_order_seals CURSOR FOR SELECT ls.status FROM se_seal_order_seal sos INNER JOIN lv_seal ls ON(sos.SEAL_ID=ls.id AND sos.SEAL_ORDER_ID = orderId);
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
-- declare continue handler for not found set done=1;
-- declare continue handler for sqlexception,sqlwarning
SELECT COUNT(ssos.`ID`) AS total INTO seal_total FROM se_seal_order_seal ssos WHERE ssos.`SEAL_ORDER_ID`=orderId;
SELECT so.`CANCEL_STATUS` INTO order_cancel_status FROM se_seal_order so WHERE so.`ID`=orderId;
-- 订单状态we取消状态,直接返回为撤回
IF order_cancel_status=1 THEN
RETURN 4;
END IF;
-- 订单中印章数量为0,直接返回为承接中
IF seal_total=0 THEN
RETURN 1;
END IF;
OPEN cur_order_seals;
-- repeat
sealLoop: LOOP
FETCH cur_order_seals INTO seal_status;
IF done=1 THEN
LEAVE sealLoop;
END IF;
-- select seal_status;
IF done!=1 THEN
IF seal_status = '2' THEN
SET statu_cj = statu_cj+1;
END IF;
IF seal_status = '3' THEN
SET statu_zz = statu_zz+1;
END IF;
IF (seal_status='1' OR seal_status='4' OR seal_status='5' OR seal_status='6' OR seal_status='7') THEN
SET statu_jf = statu_jf+1;
END IF;
END IF;
-- set done=0
-- UNTIL done end repeat;
END LOOP sealLoop;
CLOSE cur_order_seals;
IF statu_jf=seal_total THEN
RETURN 3;
ELSEIF (statu_cj=seal_total OR ((statu_cj+statu_zz)=seal_total) OR (statu_zz=seal_total) OR ((statu_zz+statu_jf)=seal_total) OR (statu_zz!=0) OR ((statu_cj+statu_jf)=seal_total)) THEN
RETURN 2;
ELSE
RETURN 1;
END IF;
END$$
DELIMITER ;
mysql自定义函数统计订单状态:GET_ORDER_STATUS()的更多相关文章
- mysql 自定义函数
原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...
- mysql自定义函数并在存储过程中调用,生成一千万条数据
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...
- MySQL 自定义函数CREATE FUNCTION实例
分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...
- MySQL自定义函数(四十六)
MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...
- java mysql自定义函数UDF之调用c函数
正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...
- MySQL自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...
- MySQL自定义函数用法详解-复合结构自定义变量/流程控制
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...
- MySQL自定义函数与存储过程
1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...
- MySQL自定义函数和存储过程的区别:
自定义函数和存储过程的区别: 1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程,功能强大,可以执行包括修改表等一系列数据库操作:用户定义函数不能用于执行一组修改全局 ...
随机推荐
- c# 数据库操作,多数据库操作、数据库操作异常报错等问题
1.引入相关的命名空间 在C#中要操作数据库,一般情况需要引入两个命名空间,在三种连接模式中都要引入下面的命名空间: System.Data;描述与数据源连接的当前状态. // // 摘要: // 连 ...
- 使用Spring Data Mongodb的MongoRepository类进行增删改查
Spring Data Mongodb提供一套快捷操作 mongodb的方法,创建Dao,继承MongoRepository,并指定实体类型和主键类型. public interface CmsPag ...
- Neo4j--图形理论基础
参考 https://www.w3cschool.cn/neo4j/neo4j_graph_theory_basics.html 节点 圆圈表示的是节点.节点是图表的基本单位. 节点可以用来存储数据, ...
- 19 01 03 css 中 reset 模块 设置
主要就是让到时候 打入代码时候 把一些bug去除 或者 让一些固有的格式取消 /* 将标签默认的间距设为0 */ body,p,h1,h2,h3,h4,h5,h6,ul,dl,dt,form,i ...
- python里类的概念
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
- .NET core ABP 获取远程IP地址
2.asp.net core 2.x上配置 第一步:在控制器中定义变量 private IHttpContextAccessor _accessor; 第二步: 控制器的构造函数进行注入 public ...
- Java时间格式化年-月-日-时间
Date d = new Date(); System.out.println(d); //Sat Mar 16 20:58:56 CST 2019 System.out.println(d.toLo ...
- 十二、GUI设计-画图程序
"""小小画笔""" from tkinter import *from tkinter.filedialog import *from t ...
- css 设置奇数行偶数行样式
.list ul li:nth-child(even){ ...} //li的偶数行样式 .list ul li:nth-child(odd){ ...} //li的奇数行样式 .list ...
- HttpClient4.x 上传文件
https://blog.csdn.net/wsdtq123/article/details/78888734