第六章存储过程与事务存储过程概述创建和执行存储过程管理存储.pptx
;学习目标;;管理存储过程;在MySQL中最常见的变量类型有局部变量和用户自定义变量两种。
1.局部变量
要定义局部变量必须使用DECLARE来声明,定义的同时可以使用default对局部变量初始化赋值。DECLARE语句格式如下:
DECLAREvar_name[,…]type[DEFAULTvalue]
value是给变量提供一个默认值,包含在一个DEFAULT子句中,它的值可以被指定为一个表达式,如果没有DEFAULT子句,初始值为NULL。例如:
DECLAREnumintDEFAULT0;;2.用户自定义变量
用户自定义变量的声明以“@”开头,形如:@var_name。为了实现不同SQL语句中进行值的传递,可以把一些数值存储在自定义的用户变量中,不同的SQL语句都可以对它进行访问。用户变量在客户端和数据库的连接建立时被定义,当连接断开时,用户变量将会被释放。用户变量无需用DECLARE关键字进行定义,可以直接使用。例如:
SET@c1=1,@c2=2,@c3=4;;在编写存储过程和存储函数时,可以使用流程控制语句对SQL语句进行组织,使其成为符合业务逻辑的代码块。MySQL中常见的流程控制语句主要有:IF语句、CASE语句、LOOP语句、WHILE语句、ITERATE语句、REPEAT语句等。;1.IF语句
IF语句可以通过判断一个逻辑条件是TRUE还是FALSE,转去执行相应的语句,它的语法格式如下:
IFexpr_conditionTHENstatement_list
[ELSEIFexpr_conditionTHENstatement_list]
[ELSEstatement_list]
ENDIF;2.CASE语句
CASE也是一个条件判断语句,多用于多分支判断的程序结构,它的常用语法格式如下:
CASEcase_expr
WHENwhen_valueTHENstatement_list
[WHENwhen_valueTHENstatement_list]……
[ELSEstatement_list]
ENDCASE;3.LOOP语句
LOOP是一个循环语句,用来进行一个语句块的循环操作。LOOP语句并不进行条件判断,会一直执行循环体的语句,如果要退出语句的执行,需要使用LEAVE等语句退出循环。LOOP语句的语法格式如下:
[loop_label:]LOOP
Statement_list
ENDLOOt_listP[loop_label];4.LEAVE语句
在循环语句LOOP使用过程中,当循环条件不满足时,可以使用LEAVE语句跳出循环体。LEAVE语句用于跳出有循环标志的流程控制语句,基本语法结构如下:
LEAVElabel;5.ITERATE语句
与LEAVE语句结束整个循环不同,ITERATE语句用于无条件转到语句段的开头处。ITERATE语句的格式如下???
ITERATElable;6.REPEAT语句
REPEAT语句用于循环执行一个语句块,采用的方式是先无条件执行语句块后再进行条件表达式判断,如果表达式为真,则循环结束,否则重复执行语句块。REPEAT语句的格式如下:
[repeat_lable:]REPEAT
statement_list
UNTILexpr_condition
ENDREPEAT[repeat_lable];7.WHILE语句
WHILE语句也用于循环执行一个语句块,但是与REPEAT语句不同,WHILE语句执行时首先判断条件表达式是否为真,如果为真则继续执行循环体内语句,否则直接退出循环体。WHILE语句的格式如下:
[while_lable:]WHILEexpr_conditionDO
Statement_list
ENDWHILE[while_lable];使用QL语句进行查询过程中,查询结果将返回很多记录,如果记录量很大时,需要使用光标来对查询结果集中的记录进行逐条读取,它可以对多行数据进行轻松的处理。;1.光标的声明
在使用光标对结果集中的数据进行处理时,需要首先声明光标,光标的声明必须在声明变量、条件之后,声明处理程序之前。光标的声明格式如下:
DECLAREcursor_nameCURSORFORselect_statement
其中cursor_name表示光标的名字,select_statement代表SELECT语句的内容,返回一个用于创建光标的结果集。下面声明一个名为cur_teacher的光标。代码如下:
DECLAREcur_teacherCURSORFORSELECTname,age
FROMteach