本篇内容介绍了“MYSQL存储过程开发中怎么使用游标嵌套”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在实际业务逻辑开发中,难免用到游标嵌套,举例如下:

delimiter//dropprocedureifexistsgood_nested_cursors1//CREATEPROCEDUREgood_nested_cursors1()READSSQLDATABEGINDECLAREl_grade_idINT;DECLAREl_class_idINT;DECLAREl_class_cntINTDEFAULT0;DECLAREl_doneINTDEFAULT0;www.2cto.comDECLAREgrade_csrcursorFORSELECTgrade_idFROMorg_grade;DECLAREclass_csrcursorFORSELECTclass_idFROMorg_classWHEREgrade_id=l_grade_id;DECLARECONTINUEHANDLERFORNOTFOUNDSETl_done=1;OPENgrade_csr;grade_loop:LOOP--Loopthroughorg_gradeFETCHgrade_csrintol_grade_id;selectconcat('年级:',l_grade_id);IFl_done=1THENLEAVEgrade_loop;ENDIF;OPENclass_csr;SETl_class_cnt=0;class_loop:LOOP--Loopthroughclassingrade.FETCHclass_csrINTOl_class_id;IFl_done=1THENLEAVEclass_loop;ENDIF;SETl_class_cnt=l_class_cnt+1;selectconcat('班级:',l_class_id);ENDLOOP;CLOSEclass_csr;SETl_done=0;www.2cto.comENDLOOPgrade_loop;CLOSEgrade_csr;END;//delimiter;/////////////////////////////////////////////////////////另一个例子:CREATEPROCEDUREcurdemo()NOTDETERMINISTICCONTAINSSQLSQLSECURITYDEFINERCOMMENT''BEGINdeclaredone1,done2intdefault0;declarename1,name2varchar(20);declareid1,id2int;www.2cto.comdeclarecur1cursorforselectid,namefromtest1;declarecontinuehandlerfornotfoundsetdone1=1;opencur1;repeatfetchcur1intoid1,name1;ifnotdone1theninsertintotest3(name)values(name1);begindeclarecur2cursorforselectid,namefromtest2;declarecontinuehandlerfornotfoundsetdone2=1;opencur2;repeatfetchcur2intoid2,name2;ifnotdone2theninsertintotest3(name)values(name2);endif;www.2cto.comuntildone2endrepeat;closecur2;setdone2=0;end;endif;untildone1endrepeat;closecur1;commit;END;///

“MYSQL存储过程开发中怎么使用游标嵌套”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!