1、需求,手动给会员新增京币,并且添加分配日志,返回修改是否成功

CREATE DEFINER=`jszapi`@`%` PROCEDURE `p_allot_user_coin`(IN `_member_id` int,IN `_coin` int,OUT `_res` tinyint)
BEGIN
/*
用途:给会员手动分配京币
作者:Mo
创建时间:2019-12-16 参数:
_member_id : 会员id
_coin : 分配京币数量
_res : 执行结果,1表示成功,0表示失败
*/
DECLARE err INT DEFAULT 0; #是否有sql错误
DECLARE timestampTmp int;#当前的时间戳 DECLARE memberSPIDCount INT DEFAULT 0;#会员id对应会员数(用于验证传入会员id是否有误) DECLARE memberTableUpdateCount INT DEFAULT 0;#更新t_members表影响的行数
DECLARE allotTableInsertId INT DEFAULT 0; #插入t_coin_log表的自增id DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err=1;#判断是否有SQL错误,全局 #开启事务
START TRANSACTION; #赋值timestampTmp
   set timestampTmp=unix_timestamp(); #判断传入会员id是否有误
SELECT COUNT(1) INTO memberSPIDCount FROM t_members WHERE id = _member_id; IF memberSPIDCount = 0 THEN SET _res = 0; ELSE
#更新
UPDATE t_members SET jing_coin = jing_coin + _coin WHERE id = _member_id; #获取更新数
SELECT ROW_COUNT() INTO memberTableUpdateCount;
IF memberTableUpdateCount = 0 THEN
SET err = 1;
END IF; #添加分配日志
INSERT INTO t_coin_log(`member_id`,`coin`,`type`,`describe`,`create_time`) VALUES(_member_id,_coin,3,'公司分配',timestampTmp);
#获取插入的自增ID
SELECT @@IDENTITY INTO allotTableInsertId;
IF allotTableInsertId = 0 THEN
SET err = 1;
END IF; #判断事务是否提交
IF err = 1 THEN
SET _res = 0;
ROLLBACK;#回滚事务
ELSE
SET _res = 1;
COMMIT;#提交事务
END IF; END IF;
END

2、查询,存储过程的调用:传入参数(IN)直接写需要传入的参数,传出参数(OUT)需要补全格式为 @变量名,如调用上述过程

#CALL 过程名(传入参数1,传入参数2,@传出变量),res名称自己取
CALL p_allot_user_coin(3,100,@res);

3、结果,输出结果 返回定义的修改状态_res值

最新文章

  1. Windows内核原理系列01 - 基本概念
  2. js操纵css更改加载图片大小
  3. 2.1---删除链表中重复元素(CC150)
  4. nodejs随记02
  5. shadowColor表示阴影颜色,shadowBlur表示模糊等级
  6. 应用部署到JBOSS上遇到的问题
  7. Ubuntu下codeblocks汉化
  8. GDB中应该知道的几个调试方法
  9. 嵌入式LINUX入门到实践(二)
  10. SVN Application
  11. 距离变换DT
  12. C# backgroundworker使用方法
  13. python_adb 图形界面获取app测试数据,并展示部分测试报告v1.0版本
  14. 分享收集的WebGL 3D学习资源
  15. java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  16. PHP截取中文字符串不出现?号的解决方法[原创]
  17. django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息
  18. "PEP:8 expected 2 blank lines ,found 1"
  19. 微软同步发行Windows 10和Windows 10 Mobile系统更新
  20. ACM学习历程—UVALive 7147 World Cup(分类讨论 && 贪心)

热门文章

  1. Linux下用Docker部署接口安全的运行环境
  2. 部署高可用 schduler
  3. CCNA 之 综合实验
  4. python calendar 时间处理类库
  5. C语言I作业11
  6. 【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币
  7. 阿里巴巴主导的“华山版《Java 开发手册》”简介
  8. 洛谷 题解 P1842 【奶牛玩杂技】
  9. [TimLinux] myblog 首页创建
  10. Java实现数列的排列组合