MySQL Procedure值动态修改SQL

CREATE PROCEDURE `modify_customer`(
  IN env VARCHAR(10)/*环境*/,
  IN idcard VARCHAR(18)/*用户身份证号*/,
  IN uname VARCHAR(20)/*用户姓名*/
)
BEGIN
/*
使用方式: CALL modify_customer('dev', '520111200001011111', '张三');
*/

  IF env NOT IN ('dev', 'sit', 'sitl', 'uat', 'uatl') THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid environment key';
  END IF;
  
  SET @id_card = idcard;
  SET @username = uname;
  
  /*定义db.table*/
  SET @tb_user = CONCAT('sys_', env , '.user');
  
  /*查询老用户名*/
  SET @select_user_sql = CONCAT('select username into @old_uname from ', @tb_user, ' where id_card=? limit 1');
  PREPARE stmt0 FROM @select_user_sql;
  EXECUTE stmt0 USING @id_card;
  DEALLOCATE PREPARE stmt0;
  
  /*更新user表*/
  SET @update_user_sql = CONCAT('update ', @tb_user, ' set username=? where id_card=?');
  PREPARE stmt FROM @update_user_sql;
  EXECUTE stmt USING @username,@id_card;
  DEALLOCATE PREPARE stmt;
 
  SELECT @id_card, @old_uname AS old_real_name, @username AS new_real_name;
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流沙QS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值