怎样合并分支条件,减少代码行数?

w怎样合并分支条件,减少代码行数?

 1 DROP PROCEDURE IF EXISTS w_self_update_amzasin;
 2 DELIMITER /w/
 3 CREATE PROCEDURE w_self_update_amzasin()
 4 BEGIN
 5   DECLARE done INT DEFAULT FALSE;
 6   DECLARE w_pkid INT;
 7   DECLARE w_asin VARCHAR(16);
 8   DECLARE w_country VARCHAR(6); 
 9   DECLARE wcur CURSOR FOR SELECT pkid,asin,country FROM amzasin;
10   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
11 
12   OPEN wcur;
13   read_loop: LOOP
14     FETCH wcur INTO w_pkid,w_asin,w_country;
15     IF done THEN LEAVE read_loop;
16     END IF;
17         SET @w_nothhtps='www.amazon.';  
18         SET @w_most=CONCAT(LOWER(w_country),'/product/dp/',w_asin);
19         CASE  LOWER(w_country)
20             WHEN 'ca' THEN SELECT 'w'; 
21             WHEN 'in' THEN SELECT 'w'; 
22             WHEN 'es' THEN SELECT 'w'; 
23             WHEN 'it' THEN SELECT 'w'; 
24             WHEN 'fr' THEN SELECT 'w'; 
25 
26             WHEN 'jp' THEN SET @w_most=CONCAT('co.',@w_most); 
27             WHEN 'uk' THEN SET @w_most=CONCAT('co.',@w_most); 
28 
29             WHEN 'mx' THEN SET @w_most=CONCAT('com.',@w_most); 
30 
31             WHEN 'us' THEN SET @w_most=CONCAT('com/gp/product/',w_asin); 
32       ELSE
33         BEGIN
34         END;
35     END CASE;
36 
37         SET @w_nothhtps=CONCAT(@w_nothhtps,@w_most);
38         SET @wtmp=CONCAT('UPDATE amzasin ',' SET url="',@w_nothhtps,'" WHERE pkid=',w_pkid);
39         PREPARE  stmt FROM @wtmp ;
40         EXECUTE  stmt ;
41         DROP PREPARE stmt;
42   END LOOP;
43   CLOSE wcur;
44 END/w/
45 DELIMITER;
46 CALL w_self_update_amzasin(); 

ERROR

 1 DROP PROCEDURE IF EXISTS w_self_update_minerasinlist_minerasinlist;
 2 DELIMITER /w/
 3 CREATE PROCEDURE w_self_update_minerasinlist()
 4 BEGIN
 5   DECLARE done INT DEFAULT FALSE;
 6   DECLARE w_autoid INT;
 7   DECLARE w_asin VARCHAR(16);
 8   DECLARE w_countrycode VARCHAR(6); 
 9   DECLARE wcur CURSOR FOR SELECT autoid,asin,countrycode FROM minerasinlist;
10   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
11 
12   OPEN wcur;
13   read_loop: LOOP
14     FETCH wcur INTO w_autoid,w_asin,w_countrycode;
15     IF done THEN LEAVE read_loop;
16     END IF;
17         SET @w_nothhtps='www.amazon.';  
18         SET @w_most=CONCAT(LOWER(w_countrycode),'/product/dp/',w_asin);
19         CASE  LOWER(w_countrycode)
20                 WHEN 'ca' 
21                 WHEN 'in' 
22                 WHEN 'es' 
23                 WHEN 'it' 
24                 WHEN 'fr' THEN SELECT 'w'; 
25 
26                 WHEN 'jp' 
27                 WHEN 'uk' THEN SET @w_most=CONCAT('co.',@w_most); 
28 
29                 WHEN 'mx' THEN SET @w_most=CONCAT('com.',@w_most); 
30 
31                 WHEN 'us' THEN SET @w_most=CONCAT('com/gp/product/',w_asin); 
32       ELSE
33         BEGIN
34         END;
35     END CASE;
36 
37         SET @w_nothhtps=CONCAT(@w_nothhtps,@w_most);
38         SET @wtmp = CONCAT('UPDATE minerasinlist ',' SET url="',@w_nothhtps,'" WHERE autoid=',w_autoid);
39         PREPARE  stmt FROM @wtmp ;
40         EXECUTE  stmt ;
41         DROP PREPARE stmt;
42   END LOOP;
43   CLOSE wcur;
44 END/w/
45 DELIMITER;
46 CALL w_self_update_minerasinlist( ); 
原文地址:https://www.cnblogs.com/rsapaper/p/6323122.html