文档章节

存储过程例子

 万维小白
发布于 2017/02/15 15:51
字数 230
阅读 4
收藏 0

从一个秒杀的小程序学到的存储过程例子

--执行存储过程
DELIMITER $$ -- console ; 转换为 $$
-- 定义存储过程
-- 参数: in 输入参数; out 输出参数
-- row_count():返回上一条修改类型sql(delete,insert,update)的影响行数
-- row_count: 0:未修改数据; >0:表示修改的行数; <0:sql错误/未执行修改sql
CREATE PROCEDURE `seckill`.`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 DEFAULT 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;
$$
-- 存储过程定义结束

DELIMITER ;
--
SET @r_result=-3;
-- 执行存储过程
CALL execute_seckill(1,1358878899,NOW(),@r_result);
-- 获取结果
SELECT @r_result;

© 著作权归作者所有

粉丝 0
博文 1
码字总数 230
作品 0
昌平
私信 提问
《mysql的存储过程和函数》

mysql 存储过程(Navicat For Mysql) 开发环境:Navicat For Mysql 第一个例子,带(输出参数)返回值的存储过程: 1、建表 create table abin5( id int, name5 VARCHAR(39) ) 2、创建存储过程 ...

吕檀溪
2014/01/03
487
0
sql 存储过程

在做一个项目涉及到数据库的验证,同事说用存储过程会比较好 然后我一通百度 简单的存储过程例子 创建一个基本的存储过程 create proc proc_stu@sname varchar(20),@pwd varchar(20)asselec...

云飞扬v5
2015/10/22
70
0
PL/SQL Step By Step(三)

1.什么是存储过程 这篇博客主要介绍存储过程(Stored Procedure),简称过程。存储过程是Oracle PL/SQL中的一种程序单元。存储过程可以通过给一个PL/SQL语句块命名从而将这个语句块存储在数据库...

wawlian
2012/03/10
132
0
创建带 IN 和 OUT 参数的 MySQL 存储过程

在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制 MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做...

oschina
2013/03/12
11.6K
7
sql存储知识储备

例1: create proc proc_stu @sname varchar(20), @pwd varchar(20) as select * from ren where sname=@sname and pwd=@pwd go 查看结果:proc_stu 'admin','admin' 例2:下面的存储过程实现......

帅的不像男的
2016/04/01
62
0

没有更多内容

加载失败,请刷新页面

加载更多

java快递电子面单打印接口对接demo

之前的后天管理系统的电子面单打印使用的是灵通打单。 使用相对比较麻烦,需要到处Excel之后再导入,麻烦。 快递鸟有电子面单api,后台系统直接对接很是方便,不过也遇到了好些问题。 不难是...

程序的小猿
30分钟前
4
0
fasjtjson文档

https://github.com/alibaba/fastjson/wiki/JSONField

jirak
31分钟前
4
0
Mybatis中插入多条记录

Oracle数据库 实现方法 <insert id="saveWithdrawLog"> INSERT ALL INTO OSM_TRADE_DETAIL(SID,MBR_ID,USR_ID,TRADE_MONEY,TRADE_TYPE,TRADE_TIME,TRADE_WAY,PAY_ID) VALUES(#{si......

豫华商
31分钟前
5
0
Flink on YARN(下):常见问题与排查思路

作者:杨弢(搏远) Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读...

开源中国小二
33分钟前
4
0
技术沙龙|京东云端到端多媒体关键技术揭秘

编者按:从带来更高编码效率、更好的用户体验的京享高清,到直播架构与网络演进优化,从而为用户带来更流畅的观看体验,以及运维系统的异常自动修复和高弹性的多媒体存储架构,一层一层展示出...

京东云技术新知
33分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部