下订单存储过程 - MYSQL

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;
时间: 2024-12-16 05:44:53

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

三大数据库下的存储过程实现通用分页

三大数据库下的存储过程实现通用分页  SqlServer数据库下通用存储过程实现分页: 1 --通用存储过程分页 2 CREATE PROCEDURE procList 3 --我们需要传入的参数 4 @strWhere NVARCHAR(max), --查询条件 5 @PageSize INT, --每页显示多少条内容 6 @PageIndex INT , --当前页 7 @TableName NVARCHAR(max), --需要查询的表名 8 @ColName NVARCHAR(max),

Linux环境下Shell调用MySQL并实现定时任务

对于一些周期性事务,我们可以在Linux下,使用shell脚本调用mysql数据库存储过程,并设置定时任务. 本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash # 50 8 * * * sh /home/bgop/hao/detector_task.sh > /dev/null 2>&1 &

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

近日在读O'REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容. Master-Slave这东西吧.在很多公司都是标配.开发中基本天天都用.遇到的问题自然也不少(如主从不同步,Master宕机).但操作权限很有限.有些东西,仅仅有自己看了.做了,才干真正知道原理是什么,也才干更好的去把握. 本文是高可用MySQL的第一篇读书笔记,主要记录Windows环境下压缩版MySQL(基于安装版的傻瓜式安装过程这里不再提及)的安装过程. 1. 从

Linux下安装配置MySQL服务器

一.安装环境 ============ OS:centos6.8 MySQL:mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 安装目录:/usr/local/mysql57 用root用户安装. 二.安装步骤 ============ 1.解压安装包 [root]#cd /usr/local [root]#mv  /path/to/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  . [root]#tar -xzf mysq

ubuntu14.04下搭建python+mysql环境

简略记录ubuntu14.04下搭建python操作的mysql服务器的过程和其中遇到的问题及解决方法. 第一部分: 安装mysql 安装步骤:1. sudo apt-get install mysql-server 2. sudo  apt-get isntall mysql-client 3. sudo apt-get install libmysqlclient-dev 检查是否安装成功: 输入mysql -u root -p 命令检查mysql是否安装成功,该命令输入后会提示输入密码,此

《高可用MySQL》读书笔记1 – Windows环境下压缩版MySQL安装

近日在读O'REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天天都用,遇到的问题自然也不少(如主从不同步,Master宕机),但操作权限非常有限.有些东西,只有自己看了.做了,才能真正知道原理是什么,也才能更好的去把握. 本文是高可用MySQL的第一篇读书笔记,主要记录Windows环境下压缩版MySQL(基于安装版的傻瓜式安装过程这里不再提及)的安装过程. 1. 从官

Linux下otl调用MySQL数据库

整体流程结构 otl用头文件otlv4.h来声明接口,具体实现在linux下是由unixODBC来实现:通过FreeTDS驱动最终调用MySQL的DBMS(个人观点) 要安装的软件及步骤 所以要安装的有unixODBC,FreeTDS 具体安装参考:http://wenku.baidu.com/view/89e9e711a2161479171128de.html(此文章里面的设置有问题,参考本文中的"关于odbcinst.ini和odbc.ini的说明一节") 关于odbcinst.i

RHEL5.6环境下yum安装MySQL

RHEL5.6环境下yum安装MySQL记录,2017年2月20日 1.卸载原有的MySQL rpm -qa命令查询是否安装了MySQL [[email protected] mysql]# rpm -qa|grep mysql mysql-server-5.0.77-4.el5_5.4 mysql-5.0.77-4.el5_5.4 使用rpm -e命令卸载安装包,如果卸载时提示依赖可以增加"--nodeps"参数: 如果想删除依赖项则直接卸载依赖项后再删除相应的包. [[email 

LAMP_01_Win下安装配置MySql

1.解压Mysql server到D盘配置环境变量MYSQL_HOME      D:\J2EE\apache-ant-1.9.7PATH            %MYSQL_HOME%\bin; 2.修改MYSQL启动配置文件my-default.ini注意复制备份然后修改basedir = D:\\J2EE\\mysql-5.7.14-winx64datadir = D:\\J2EE\\mysql-5.7.14-winx64/dataport = 3306 3.安装MYSQL服务以管理员运行