BEGIN

    DECLARE smark INT;
DECLARE orderId INT;
/*查询课程是否存在,如果不存在就不执行订单操作了*/
SET @count = (SELECT count(1) FROM t_course WHERE id = courseId);
IF @count = 0 THEN
SELECT "noexist";
ELSE
/*查询某个课程是否已经报名,如果已经报名了就不需要在报名了*/
SET @c1 = (SELECT COUNT(1) FROM t_shoporder sd WHERE sd.user_id = userId AND sd.course_id = courseId AND sd.is_delete = 0); /*我报名的课程*/
IF @c1 = 0 THEN
/*如果没有报名*/
/*订单号的设定*/
SET @orderNum = CONVERT(CONCAT(
"ms_",DATE_FORMAT(NOW(),'%Y%m%d'),
courseId,
CEIL(RAND() * 99999),
userId
),CHARACTER); SET @price = (SELECT tprice FROM t_course WHERE id = courseId);
/*保存订单*/
INSERT INTO t_shoporder (
user_id,
is_delete,
num,
price,
description,
ip,
ipAddress,
order_number,
STATUS,
course_id,
type
)VALUES(
userId,
0,
tnum,
@price,
CONCAT("用户【",username,"】,在",DATE_FORMAT(NOW(),'%Y-%m-%d'),"位于",ip,"/",ipAddress,"提交订单,数量是",tnum,",金额是:¥",@price),
ip,
ipAddress,
@orderNum,
0,
courseId,
NULL
);
/*查询当前订单的最后一条ID*/
SET @orderId = (SELECT id FROM t_shoporder WHERE order_number = @orderNum);
/*拼接订单号,确保唯一*/
SET @onumber = CONVERT(CONCAT(@orderNum,@orderId), CHARACTER);
/*修改订单号*/
UPDATE t_shoporder SET order_number = @onumber WHERE id = @orderId;
/*返回订单和状态*/
SELECT CONCAT(@orderId,"#",0);
ELSE
SELECT ts.id, ts.status INTO orderId, smark FROM t_shoporder ts WHERE ts.is_delete = 0 AND ts.course_id = courseId AND ts.user_id userId;
IF smark = 0 THEN
SELECT CONCAT(orderId,"#",0); /*已经支付了*/
ELSE
SELECT CONCAT(orderId,"#",1); /*已经支付了*/
END IF;
END IF;
END IF;
END;

下订单存储过程 - MYSQL的更多相关文章

  1. 【原】Linux环境下Shell调用MySQL并实现定时任务

    对于一些周期性事务,我们可以在Linux下,使用shell脚本调用mysql数据库存储过程,并设置定时任务. 本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...使用cron ...

  2. Linux下yum安装MySQL

    写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...

  3. ubuntu14.04下搭建python+mysql环境

    简略记录ubuntu14.04下搭建python操作的mysql服务器的过程和其中遇到的问题及解决方法. 第一部分: 安装mysql 安装步骤:1. sudo apt-get install mysq ...

  4. mac下xampp的mysql无法自动启动

    mac下xampp的mysql无法自动启动,每次启动都要手动在终端里执行 sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start 自动启动 ...

  5. 在CentOS下自动备份mysql

    在CentOS下自动备份mysql数据库,并差异同步到其它网络主机上 1.在/root/mysql_backup/下添加backup.sh:vim /root/mysql_backup/backup. ...

  6. MAC下彻底解决mysql无法插入和显示中文

    一.场景呈现 Mac 下Eclipse+mysql开发j2ee的时候,在页面像数据库中插入中文数据的时候,数据库会报错.而且即使插入成功,在控制台或者其他可视化数据库操作软件看数据发现都是??,错误的 ...

  7. linux系统下yum 安装mysql的方法

    菜鸟一个,记录下yum 安装mysql的方法,给需要的朋友也做个参考吧. 弄了个新vps,想安装最新版的mysql,网上查了相关资料,记录如下: 1.安装查看有没有安装过:          yum ...

  8. LAMP_01_Win下安装配置MySql

    1.解压Mysql server到D盘配置环境变量MYSQL_HOME      D:\J2EE\apache-ant-1.9.7PATH            %MYSQL_HOME%\bin; 2 ...

  9. 《高可用MySQL》1 – Windows环境下压缩版MySQL安装

    近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...

随机推荐

  1. oracleDBA-D2

    1.超级管理员sys和system的区别: sys权限比system大,system无法查看到当前数据库是否运行在归档模式下,无法关闭数据库.sys是老大,system是老二. 2.OEM-oracl ...

  2. java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  3. 【转】Js获取当前日期时间及格式化操作

    (转自:http://www.cnblogs.com/qinpengming/archive/2012/12/03/2800002.html) var myDate = new Date(); myD ...

  4. EF多对多更新报错(TableNoTracking引发的bug)

    实体映射关系如下,SISTUser和SISTUserRoles存在多对多的关系,生成中间表 public partial class SISTUserMap: EntityTypeConfigurat ...

  5. IP地址,子网掩码,默认网关,DNS服务器知识详解(转)

    转自:http://www.cnblogs.com/JuneWang/p/3917697.html 为了更深入的学习TCP/IP协议,最近看了不少有关资料,收集整理记录如下,以备后面的使用和方便各位学 ...

  6. ***PHP 数组排序 +php二维数组排序方法(PHP比较器)

    PHP - 一维数组的排序函数 在本节中,我们将学习如下 PHP 数组排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组 ...

  7. 【leetcode】Median of Two Sorted Arrays

    题目简述: There are two sorted arrays A and B of size m and n respectively. Find the median of the two s ...

  8. Orchard教程索引页

    Orchard官方教程(译)索引 链接标注 原文 则表示未译,其他带有中文标题的表示译文内容. 入门 安装Orchard--Installing Orchard 通过zip包手动安装Orchard-- ...

  9. Beginning Scala study note(3) Object Orientation in Scala

    1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). examp ...

  10. 【Hibernate框架】三种继承映射

    一.综述 大家都知道,hibernate作为ORM框架的一个具体实现,最大的一个优点就是是我们的开发更加的能体现出"面向对象"的思想.在面向对象开发中,类与类之间是可以相互继承的( ...