ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MySQL进阶应用3.2: 数据库编程之存储过程体构件PROCEDURE routine_body

MySQL进阶应用3.2: 数据库编程之存储过程体构件PROCEDURE routine_body 上一期主要分享了存储过程PROCEDURE的定义、作用、优势及SQL语句运用本期针对存储过程PROCEDURE 中 存储过程体 routine_body 的构建展开说明下一期预告 存储函数 FUNCTION在存储过程体中可以使用各种SQL语句与过程式语句的组合来封装数据应用中复杂的业务逻辑和处理规则已实现数据库应用的灵活编程。构造存储过程体的常用语法元素声明局部变量 DECLARE赋值局部变量 SET选定列的值存储到局部变量中 SELECT…INTO流程控制语句IF-THEN-ELSECASEWHILE/REPEAT/LOOP游标 CURSOR声明局部变量 DECLARE在存储过程体中可以声明局部变量用来存储存储过程体中的临时结果。使用DECLARE语句来声明局部变量并且同时还可以对该局部变量赋予一个初始值。语法格式DECLARE var_name [,...] type [DEFAULT value];举例声明一个整型局部变量eno:DECLARE eno CHAR(10);使用局部变量的注意事项只能在存储过程体的BEGIN…END语句块中声明必须在存储过程体的开头处声明作用范围仅限于声明它的BEGIN…END语句块其他语句块中的语句不可以使用它与用户变量的不同是局部变量没有使用符号且同3.赋值局部变量 SET语法格式SET var_nameexpr[, var_nameexpr...]举例为声明的局部变量eno赋予一个字符串‘20260913’SET eno‘20260913’;把选定列的值存储到局部变量中语法格式SELECT col_name[,...] INTO var_name [,...] FROM ...;存储过程体中的SELECT…INTO语句返回的结果集只能有一行数据流程控制语句a. 条件判断语句 IF- THEN- ELSE : 根据不同的条件执行不同的操作IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDIFb. 条件判断语句 CASECASEWHENsearch_conditionTHENstatement_list[WHENsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDCASEc. 循环语句 WHILE/REPEAT/LOOPWHILE[begin_label:]WHILEsearch_conditionDOstatement_listENDWHILE[end_label]LOOP[begin_label:]LOOPstatement_listENDLOOP[end_label]#要用LEAVE label语句推出REPEAT[begin_label:]REPEATstatement_list UNTIL search_conditionENDREPEAT[end_label]REPEAT语句先执行语句后进行判断WHILE语句是先判断条件为真时才执行语句。ITERATE语句作为子句出现用于表示推出当前循环且重新开始一个循环。游标 CURSOR游标是一个被SELECT语句检索出来的结果集。存储了游标后应用程序或用户就可以根据需要滚动或浏览其中的数据。游标相当于一个指针它指向当前的一行数据。声明游标DECLARE cursor_name CURSOR FOR select_statement;打开游标将游标连接到由SELECT语句返回的结果集中OPEN cursor_name;读取数据FETCH cursor_name INTO var_name[, varname]...关闭游标CLOSE cursor_name;综合实例#在数据库db_company中创建一个存储过程用于计算表tb_emp中数据行的行数USEdb_company;DELIMITER$$CREATEPROCEDUREsp_sumofrow(OUTROWSINT)BEGINDECLAREenoCHAR;DECLAREFOUNDBOOLEANDEFAULTTRUE;DECLAREcurCURSORFORSELECTempNoFROMtb_emp;DECLARECONTINUEHANDLERFORNOTFOUND-- 定义一个推进句柄在条件出现时被执行的代码用于控制循环语句实现游标的下移SETFOUNDFALSE;SETROWS0;OPENcur;FETCHcurINTOeno;WHILEFOUNDDOSETROWSROWS1;FETCHcurINTOeno;ENDWHILE;CLOSEcur;END$$CALLsp_sumofrow(rows);-- 对存储过程 sp_sumofrow进行调用SELECTrows;-- 查看调用存储过程sp_sumofrow的结果下一期预告 存储函数 FUNCTION
返回列表