-- 秒杀执行存储过程
DELETE $$ -- console的结束符号由;转换成 $$
-- in输入参数;out:输出参数
-- ROW_COUNT():返回上条dml影响的条数: 小于0:sql语句错误/未执行修改sql操作
-- 存储过程执行秒杀过程
delimiter $$
CREATE PROCEDURE kill.execute_seckill -- 在kill数据库中创建名称为execute_seckill的存储过程
(in v_seckill_id BIGINT, in v_phone BIGINT, in v_kill_time timestamp, out r_result int)
BEGIN
DECLARE insert_count INT;
SET insert_count = 0;
START TRANSACTION;
INSERT IGNORE into success_killed (seckill_id, user_phone,create_time)
values (v_seckill_id,v_phone,v_kill_time);
select ROW_COUNT() into insert_count;
if(insert_count = 0) THEN
ROLLBACK;
SET r_result = -1;
ELSEIF (insert_count < 0) THEN
ROLLBACK;
set r_result = -2;
ELSE
update seckill set number = number - 1
where seckill_id = v_seckill_id
and end_time > v_kill_time
and start_time < v_kill_time
and number > 0;
SELECT ROW_COUNT() into insert_count;
IF (insert_count = 0) THEN
ROLLBACK;
set r_result = 0;
ELSEIF (insert_count < 0) THEN
ROLLBACK;
set r_result = -2;
ELSE
COMMIT;
SET r_result = 1;
END IF;
END IF;
END;
$$
-- 存储过程定义结束
-- 删除存储过程
drop procedure execute_seckill

delimiter ; -- console的结束符号由$$转换成;
set @r_result = -3; -- 在console中定义变量需要使用@
-- console 中执行存储过程
call execute_seckill(1001, 15665662547,NOW(),@r_result);

-- 获取结果mysql语法
select @r_result;

show CREATE PROCEDURE execute_seckill -- 查询存储过程

【关于msyql5.6创建存储过程的一些记录】的更多相关文章

  1. 利用navicat创建存储过程、触发器和使用游标的简单实例

    利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报  分类: 数 ...

  2. MySQL的一些基本查询,创建存储过程等

    常用的查询条件有1.比较:=,<,>,<=,>=,!=,<>,!>,!<              2.确定范围:between and,not bet ...

  3. 使用Toad创建存储过程出现错误并解决

    存储过程中遇到ora-00942表或视图不存在 CREATE OR REPLACE PROCEDURE p IS CURSOR c IS SELECT * FROM scott.emp FOR UPD ...

  4. navicat创建存储过程、触发器和使用游标

    创建存储过程和触发器 1.建表 首先先建两张表(users表和number表),具体设计如下图: 2.存储过程 写一个存储过程,往users表中插入数据,创建过程如下: 代码如下: BEGIN #Ro ...

  5. 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合

    在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...

  6. SQLServer之创建存储过程

    创建存储过程注意事项 在 SQL Server. Azure SQL Database.Azure SQL 数据仓库和并行数据库中创建 Transact-SQL 或公共语言运行时 (CLR) 存储过程 ...

  7. navicat创建存储过程的小问题

    再简单的东西长时间不用了就会出错,特此即时的记录下来,以便以后参考! 转自:http://blog.csdn.net/winy_lm/article/details/49690633 以下为navic ...

  8. skynet 创建存储过程脚本

    最近主程更改了数据库的操作方案,由之前的拼写sql脚本转为在mysql端创建好存储过程后,直接调用存储过程. 首先对一个表测试上述过程: 数据库端存储过程:(测试表) CREATE TABLE `ra ...

  9. mysql 创建存储过程报错

    在创建存储过程前把结束符定义为 delimiter // 然后再创建就不会报错

随机推荐

  1. SpringCloud之服务提供和服务调用的搭建

    pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...

  2. Java大坑之Integer对象比较相等

    public class IntegerTest { /*** * 对于Integer var = ? 在 -128到127之间的复制,Integer对象是在IntegerCache.cache产生 ...

  3. linux 系统监控好文

    摘自: http://os.51cto.com/art/201005/200714_all.htm

  4. The Quantum L3 router and floating IPs

    This post shows how the Quantum L3 Agent uses the Linux IP stack to implement the Quantum L3 Routing ...

  5. 恢复delete删除的数据

    SELECT * FROM tablename AS OF TIMESTAMP TO_TIMESTAMP('2010-12-15 11:10:17', 'YYYY-MM-DD HH:MI:SS')

  6. IIS 高并发导致log记录不完全

    项目测试性能过程中,对于高并发测试过程中发现log记录缺失一部分,经过调查,找到了原因是因为IIS连接数的限制,经过修改连接数,成功完成.设置如下: “点击网站”->“右击切换到功能视图”-&g ...

  7. Python习题-输出一个字符串中最长的子字符串及其长度

    描述:有个字符串$sd1#111$svda123!!!221&eSSDSDG,包含特殊字符.数字和字母,输出最长的子字符串和他的长度#例如上面的字符串包含数字字母的字符串是svda123,长度 ...

  8. WEBRTC基本介绍

    “WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Glob ...

  9. bzoj 4500: 矩阵 差分约束系统

    题目: Description 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 选择一行, 该行每个格子的权值加1或减1. 选择一列, 该列每个格子的权值加1或减1. 现在有K ...

  10. HDU4699:Editor

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=46 ...