MySQL存储过程 游标 错误处理的示例代码
Sep 19, 2017 am 11:04 AMMySQL存储过程 游标 错误处理的示例代码
--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
Atas ialah kandungan terperinci MySQL存储过程 游标 错误处理的示例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian kepada ralat segera Windows Update Ralat 0x8024401c

Kemahiran pemprosesan struktur data besar PHP

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP?

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP?

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP?

Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data?

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP?
