• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Mysql 存储过程中 游标使用遇到有关问题了

mysql 搞代码 7年前 (2018-06-02) 187次浏览 已收录 0个评论

mysql 存储过程中 游标使用遇到问题了
CREATE FUNCTION func_get_split_string(  
  f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8  
  BEGIN  
  declare result varchar(255) default ”;  
  set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));  
  return result;  
  END

CREATE PROCEDURE split_data()  
  BEGIN  
  DECLARE tid VARCHAR(32);  
  DECLARE address_name VARCHAR(200);  
  DECLARE province_name VARCHAR(200);  
  DECLARE city_name VARCHAR(200);  
  DECLARE zone_name VARCHAR(200);  
   
  DECLARE province_id VARCHAR(200);  
  DECLARE city_id VARCHAR(200);  
  DECLARE zone_id VARCHAR(200);  
   
  DECLARE done INT DEFAULT 0;  
  
   
  DECLARE cur CURSOR FOR SELECT id,address FROM tn_company;  
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
   
   
  OPEN cur;  
  address_lb:LOOP  
  FETCH cur INTO tid,address_name;  
  SELECT func_get_split_string(address_name,’ ‘,2) INTO province_name;  
  SELECT func_get_split_string(address_name,’ ‘,3) INTO city_name;  
  SELECT func_get_split_string(address_name,’ ‘,4) INTO zone_name;  
   
  SELECT idcode INTO province_id FROM tl_district WHERE name = province_name and LENGTH(idcode)=2; 
SELECT idcode INTO city_id FROM tl_district WHERE name = city_name AND LENGTH(idcode)=4 and parentId=province_id; 
  SELECT idcode INTO zone_id FROM tl_district WHERE name like zone_name AND LENGTH(idcode)=6 and parentid=city_id LIMIT 1;
   
  UPDATE tn_company  
  SET address_province = province_name,  
  address_city = city_name,  
  address_zone = zone_name,  
  provinceId = province_id,  
  cityId = city_id,  
  zoneId = zone_id 
  WHERE id = tid;  
   
  IF done = 1 THEN  
  LEAVE address_lb;  
  END IF;  
  END LOOP address_lb;  
   
  CLOSE cur;  
  commit;  
END 

就是将tn_company 表中的字段address 根据空格 分出来 省市区 3个字段,再和tl_district(全国省市区及Id)表中做对
比,去其idcode,存入tn_company表中对应的字段里,不知道为什么,运行没有错误,就是一个字段也插不进去,而且我是70w条数据,几秒就运行完了, 不知道是不是哪写的不对? 高人上座,求指教!

——解决方案——————–
MYSQL要转到MYSQL版块的,知道MSSQL的路过。
——解决方案——————–

探讨

引用:

MYSQL要转到MYSQL版块的,知道MSSQL的路过。
姐姐,俺不会转呀,第一次发帖,见谅! 有问题,求指导!

——解决方案——————–
管理菜单,移动,找MYSQL版块。要不我给你移过去?
——解决方案——————–
MY SQL 也有存储过程的啊?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mysql 存储过程中 游标使用遇到有关问题了
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址