记一次mysql更新同字段不同用户

DROP PROCEDURE IF EXISTS `all_userlist_money`;

#对应版更新任意用户余额 存储过程 2019年7月19日 01:52:48 原始

DELIMITER $$

CREATE PROCEDURE all_userlist_money(IN UserIdTEXT,IN UserMoneyTEXT,IN sSplitTEXT)

SQL SECURITY INVOKER  #允许其他用户运行

BEGIN

    DECLARE e_codeINT DEFAULT 0;#初始化报错码为0

    DECLARE resultVARCHAR(256)CHARACTER set utf8;#初始化返回结果,解决中文乱码问题

    DECLARE LengthINT DEFAULT 0;/*定义长度*/

    DECLARE UserIdStringTEXT;/*定义初始数组字符*/

    DECLARE UserIdStrTEXT;/*定义初始数组字符*/

    DECLARE UserMoneyStringTEXT;/*定义初始数组字符*/

    DECLARE UserMoneyStrTEXT;/*定义初始字符*/

/*DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET e_code=1;#遇到错误后继续执行;(需要返回执行结果时用这个)*/

    SET Length =LENGTH(UserId) -LENGTH(REPLACE(UserId,sSplit,''));/*获得数组长度*/

    SET UserIdString = UserId;

SET UserMoneyString = UserMoney;

WHILE Length >0 DO

        set UserIdStr =substr(UserIdString,1,instr(UserIdString,sSplit)-1);-- 第一组会员ID

        set UserIdString =substr(UserIdString,length(UserIdStr)+length(sSplit)+1);-- 后期的会员ID字符串

        set Length = Length -1;

set @str =trim(UserIdStr);

set UserMoneyStr =substr(UserMoneyString,1,instr(UserMoneyString,sSplit)-1);-- 第一组金额

        set UserMoneyString =substr(UserMoneyString,length(UserMoneyStr)+length(sSplit)+1);-- 后面的金额字符串

        set @usermoney =trim(UserMoneyStr);

UPDATE tplay_userSET ep=ep+@usermoneyWHERE `user_id` = @str;

END WHILE;

SELECT result;

END $$

DELIMITER ;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,949评论 0 5
  • 转载自这里 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Sto...
    杜七阅读 6,984评论 4 27
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 5,854评论 0 10
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 4,821评论 0 0
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 5,679评论 0 8