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. j嵌入式f_os之定时管理

    /* * jf_timer.h * * Created on: Aug 20, 2016 * Author: lort */ #ifndef JF_OS_JF_TIMER_H_ #define JF_ ...

  2. SerialPort 串口开发

    private SerialPort sPort = new SerialPort(); //串行端口资源 /// <summary> /// 函数功能:打开串口/关闭串口 /// < ...

  3. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  4. iOS常用系统信息获取方法

    一.手机电量获取,方法二需要导入头文件#import<objc/runtime.h> 方法一.获取电池电量(一般用百分数表示,大家自行处理就好) -(CGFloat)getBatteryQ ...

  5. Mahout推荐算法API详解

    转载自:http://blog.fens.me/mahout-recommendation-api/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, ...

  6. 广义线性模型(Generalized Linear Models)

    前面的文章已经介绍了一个回归和一个分类的例子.在逻辑回归模型中我们假设: 在分类问题中我们假设: 他们都是广义线性模型中的一个例子,在理解广义线性模型之前需要先理解指数分布族. 指数分布族(The E ...

  7. PHP7函数大全(4553个函数)

    转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...

  8. c++ boost asio库初学习

    前些日子研究了一个c++的一个socket库,留下范例代码给以后自己参考. 同步server: // asio_server.cpp : コンソール アプリケーションのエントリ ポイントを定義します. ...

  9. CentOS 7 安装后没有ifconfig命令

    /bin,/sbin,/usr/bin,/usr/sbin下面都没有ifconfig命令. 执行命令  yum install net-tools 即可.

  10. Swift 获取屏幕宽高

    let screenh = UIScreen.mainScreen().applicationFrame.size.heightlet screenw = UIScreen.mainScreen(). ...