存储过程 游标 错误处理(重新生成用户编号)
2018-06-18 00:15:59来源:未知 阅读 ()
--set_account_data 重新生成用户编号 BEGIN DECLARE temp_id INT(8); /*用户id*/ DECLARE temp_manager INT(8); /*上级id*/ DECLARE temp_accounter_no VARCHAR(64); /*上级编码*/ DECLARE temp_max_no VARCHAR(64); /*上级的最大下级编码*/ DECLARE max_no VARCHAR(64); /*编码*/ DECLARE str1 VARCHAR(64); /*编码*/ DECLARE temp_no INT(8); /*编码*/ DECLARE temp_level INT(8); /*级次*/ DECLARE state VARCHAR(30); /*错误处理监听变量*/ /*定义用户表游标*/ DECLARE account_cursor CURSOR FOR SELECT id,manager FROM account ORDER BY manager,id; /*定义错误处理监听,用于结束游标循环*/ DECLARE CONTINUE HANDLER FOR 1329 BEGIN SET state = 'error'; END; OPEN account_cursor; REPEAT FETCH account_cursor INTO temp_id,temp_manager; IF (temp_id = 1) THEN UPDATE account SET leaf = 0,no = '01',level = 1 WHERE id = 1; ELSE /*设置上级leaf为0*/ UPDATE account SET leaf = 0 WHERE id = temp_manager; /*查询上级编号*/ SELECT no INTO temp_accounter_no FROM account WHERE id = temp_manager; /*设置上级编码*/ UPDATE account SET pno = temp_accounter_no WHERE id = temp_id; /*查询上级原有的最大下级编码*/ SELECT MAX(no) INTO temp_max_no FROM account WHERE pno = temp_accounter_no; /*如果最大下级编码为空,生成新的编码,否则把原来的编码加一*/ IF (temp_max_no IS NULL) THEN SET max_no = concat(temp_accounter_no, '0001'); ELSE SET str1 = SUBSTR(temp_max_no,LENGTH(temp_max_no)-3,4); SET temp_no = str1; SET temp_no = temp_no + 1; SET str1 = temp_no; IF (LENGTH(str1) = 1) THEN SET str1 = concat('000', str1); ELSEIF (LENGTH(str1) = 2) THEN SET str1 = concat('00', str1); ELSEIF (LENGTH(str1) = 3) THEN SET str1 = concat('0', str1); END IF; SET max_no = concat(temp_accounter_no, str1); END IF; UPDATE account SET no = max_no WHERE id = temp_id; SET temp_level = (LENGTH(max_no) + 2) / 4; UPDATE account SET level = temp_level WHERE id = temp_id; END IF; UNTIL state = 'error' END REPEAT; CLOSE account_cursor; /*修改leaf为null的为1*/ UPDATE account SET leaf = 1 WHERE leaf IS NULL; RETURN 0; END
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MySQL如何存储IP地址 2019-10-25
- MySQL存储引擎总结 2019-09-23
- HTML、JS与PHP之间的数据传输 2019-09-23
- WebSocket 通信过程与实现,PHPer必备知识 2019-09-04
- Session的生成机制、回收机制和存储机制详解 2019-08-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash