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

推荐阅读更多精彩内容