SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 MySQL存储过程 游标 错误处理的示例代码--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 以上就是MySQL存储过程 游标 错误处理的示例代码的详细内容,更多请关注php中文网其它相关文章!
学习教程快速掌握从入门到精通的SQL知识。
|
关键词: MySQL存储过程 游标 出错处理的示例代码