123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- CREATE DEFINER=`root`@`%` PROCEDURE `updatedownloadprojname`(
- pastureidIN BIGINT (20),
- dateIN VARCHAR(50)
- )
- label:BEGIN
- DECLARE positionIdS
- INT (20);
- DECLARE
- positionNameS VARCHAR (100);
- DECLARE i,amount,sorts,amountsl,sortssl,havebuttons,havebuttond1 INT(11) DEFAULT 0;
- DECLARE msg1 TEXT;
- DECLARE code1 CHAR(5) DEFAULT '00000';
- DECLARE ids,projnames,temstr,tem,pids,idssl varCHAR(30);
- DECLARE t_error INTEGER DEFAULT 0;
- DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
- BEGIN
- -- 获取异常code,异常信息
- GET DIAGNOSTICS CONDITION 1
- code1 = RETURNED_SQLSTATE, msg1 = MESSAGE_TEXT;
- END;
- #开启事务
- START TRANSACTION;
-
-
- select 1 into tem;
- SELECT '' INTO temstr;
- SELECT 0 INTO sorts;
- SELECT count(*) into amount FROM downloadedplan
- WHERE mydate = dateIN AND pastureid = pastureidIN ;
-
- WHILE amount > 0 DO
-
- SELECT amount-1 INTO amount;
-
- SELECT id,projname,pid,havebuttons INTO ids,projnames,pids,havebuttons FROM downloadedplan
- WHERE mydate = dateIN AND pastureid = pastureidIN
- ORDER BY projname,id ASC LIMIT sorts,1;
-
-
-
- IF(length(projnames) = 6) and havebuttons = 0
- THEN
- SELECT '1' INTO tem;
- SELECT LEFT(projnames,2) INTO temstr;
-
- WHILE (SELECT COUNT(*) FROM downloadedplan WHERE pastureid=pastureidIN and mydate = dateIN AND projname = CONCAT(LEFT(temstr,2),LPAD(tem,3,'0')))>0 do
- SELECT tem+1 INTO tem;
- end WHILE;
-
- UPDATE downloadedplan
- SET projname = CONCAT(LEFT(projname,2),LPAD(tem,3,'0'))
- WHERE pastureid=pastureidIN AND id = ids;
- END IF;
-
-
- select count(1) into amountsl FROM downloadedplan WHERE pastureid=pastureidIN and mydate = dateIN AND length(projname) > 6 and pid = pids;
- -- --
- SELECT 0 INTO sortssl;
- select projname into projnames from downloadedplan where id = ids;
-
-
- if length(projnames) < 6 THEN
- -- select projnames;
- WHILE amountsl > 0 DO
- SELECT 0 INTO havebuttond1;
- --
- select id,havebutton into idssl,havebuttond1 FROM downloadedplan WHERE pastureid=pastureidIN and mydate = dateIN AND length(projname) > 6 and pid = pids ORDER BY projname,id ASC LIMIT sortssl,1;
- --
- SELECT sortssl + 1 INTO sortssl;
- if havebuttond1 = 0 THEN
- UPDATE downloadedplan
- SET projname = CONCAT(projnames,'.', sortssl)
- WHERE pastureid=pastureidIN AND id = idssl;
- END IF;
- SELECT amountsl-1 INTO amountsl;
- END WHILE;
- END IF;
- SELECT sorts + 1 INTO sorts;
- END WHILE;
-
-
-
-
-
-
-
-
- SELECT 0 INTO sorts;
- SELECT 0 INTO amount;
-
- SELECT count(*) into amount FROM downloadedplan
- WHERE mydate = dateIN AND pastureid = pastureidIN ;
-
- WHILE amount > 0 DO
- SELECT id INTO ids FROM downloadedplan
- WHERE mydate = dateIN AND pastureid = pastureidIN
- ORDER BY projname asc limit sorts,1;
-
- SELECT sorts+1 INTO sorts;
-
- UPDATE downloadedplan
- SET sort = sorts
- WHERE pastureid=pastureidIN AND id = ids;
-
- SELECT amount-1 INTO amount;
- END WHILE;
- -- SELECT count(*) into amount FROM downloadedplan
- -- WHERE mydate = dateIN AND pastureid = pastureidIN and length(projname)>5
- -- ORDER BY projname,id asc;
- --
- --
- -- update downloadedplan
- -- set sort = 200 + sort
- -- WHERE pastureid=pastureidIN AND mydate = dateIN and LENGTH(projname)>5;
- --
- -- WHILE amount > 0 DO
- -- SELECT amount-1 INTO amount;
- --
- -- SELECT id,projname INTO ids,projnames FROM downloadedplan
- -- WHERE mydate = dateIN AND pastureid = pastureidIN AND LENGTH(projname)>5
- -- ORDER BY projname,id ASC LIMIT 1;
- --
- --
- --
- -- IF(temstr<>LEFT(projnames,2))
- -- THEN
- -- SELECT '1' INTO tem;
- -- SELECT LEFT(projnames,2) INTO temstr;
- -- END IF;
- --
- -- WHILE (SELECT COUNT(*) FROM downloadedplan WHERE pastureid=pastureidIN and mydate = dateIN AND projname = CONCAT(LEFT(temstr,2),LPAD(tem,3,'0')))>0 do
- -- SELECT tem+1 INTO tem;
- -- end WHILE;
- --
- -- WHILE (SELECT COUNT(*) FROM downloadedplan WHERE pastureid=pastureidIN AND mydate = dateIN AND sort = sorts)>0 DO
- -- SELECT sorts+1 INTO sorts;
- -- END WHILE;
- --
- -- UPDATE downloadedplan
- -- SET projname = CONCAT(LEFT(projname,2),LPAD(tem,3,'0')),
- -- sort = sorts
- -- WHERE pastureid=pastureidIN AND id = ids;
- --
- -- SELECT tem+1 INTO tem;
- -- SELECT sorts+1 INTO sorts;
- --
- -- END WHILE;
-
-
-
- IF code1 = '00000' THEN
- COMMIT;
- SELECT
- 'success' msg;
- ELSE
- ROLLBACK;
- SELECT
- msg1 msg;
- END IF;
- END
|