mysql存储过程和函数.ppt
《mysql存储过程和函数.ppt》由会员分享,可在线阅读,更多相关《mysql存储过程和函数.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9讲讲 存储过程与存储函数存储过程与存储函数存储过程和函数是在数据库中定义一些存储过程和函数是在数据库中定义一些SQL语句的集合,语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在语句。而且,存储过程和函数是在MySQL服务器中存服务器中存储和执行的,可以减少客户端和服务器端的数据传输。储和执行的,可以减少客户端和服务器端的数据传输。9.1 创建存储过程和函数创建存储过程和函数创建存储过程
2、和函数是指将经常使用的一组创建存储过程和函数是指将经常使用的一组SQL语句语句的组合在一起,并将这些的组合在一起,并将这些SQL语句当作一个整体存储在语句当作一个整体存储在MySQL服务器中。例如,银行经常需要计算用户的利息。服务器中。例如,银行经常需要计算用户的利息。不同类别的用户的利率是不一样的。这就可以将计算利率不同类别的用户的利率是不一样的。这就可以将计算利率的的SQL代码写成一个存储过程或者存储函数。只要调用这代码写成一个存储过程或者存储函数。只要调用这个存储过程或者存储函数,就可以将不同类别用户的利息个存储过程或者存储函数,就可以将不同类别用户的利息计算出来。计算出来。创建存储过程
3、创建存储过程MySQL中,创建存储过程的基本形式如下:中,创建存储过程的基本形式如下:CREATE PROCEDURE sp_name(proc_parameter,.)characteristic.routine_bodySp_name:存储过程的名称,默认在当前数据库中创存储过程的名称,默认在当前数据库中创建。这个名称应当尽量避免与建。这个名称应当尽量避免与MySQL的内置函数相同的名的内置函数相同的名称称Proc_parameter:存储过程的参数列表存储过程的参数列表格式格式IN|OUT|INOUTparam_name typeParam_name为参数名,为参数名,type为参数的数
4、据类型。多为参数的数据类型。多个参数彼此间用逗号分隔。输入参数、输出参数和输入个参数彼此间用逗号分隔。输入参数、输出参数和输入/输输出参数,分别用出参数,分别用in/out/inout标识。参数的取名不要与数据标识。参数的取名不要与数据表的列名相同。表的列名相同。Characteristic:存储过程的某些特征设定,分别介绍存储过程的某些特征设定,分别介绍1 COMMENTstring:用于对存储过程的描述,其中用于对存储过程的描述,其中string为描述内容为描述内容,comment为关键字。为关键字。2 LANGUAGE SQL:指明编写这个存储过程的语言为指明编写这个存储过程的语言为SQ
5、L语言。这个选项可以不指定。语言。这个选项可以不指定。3 DETERMINISTIC:表示存储过程对同样的输入参数表示存储过程对同样的输入参数产生相同的结果产生相同的结果;NOT DETERMINISTIC,则表示会产生不,则表示会产生不确定的结果(默认)。确定的结果(默认)。4 contains sql|no sql|reads sql data|modifies sql dataContains sql表示存储过程包含读或写数据的语句表示存储过程包含读或写数据的语句(默认)(默认)No sql表示不包含表示不包含sql语句语句Reads sql data表示存储过程只包含读数据的语句表示存
6、储过程只包含读数据的语句Modifies sql data 表示存储过程只包含写数据的语句表示存储过程只包含写数据的语句5 sql security:这个特征用来指定存储过程使用创建这个特征用来指定存储过程使用创建该存储过程的用户该存储过程的用户(definer)的许可来执行,还是使用调用的许可来执行,还是使用调用者者(invoker)的许可来执行。默认是的许可来执行。默认是definerRoutine_body:存储过程的主体部分,包含了在过程存储过程的主体部分,包含了在过程调用的时候必须执行的调用的时候必须执行的sql语句。以语句。以begin开始,以开始,以end结结束。如果存储过程体中
7、只有一条束。如果存储过程体中只有一条sql语句语句,可以省略可以省略begin-end标志。标志。例题例题在数据库在数据库example中创建一个存储过程,用于实现给中创建一个存储过程,用于实现给定表定表customers中一个中一个id号即可修改表号即可修改表customers中该客中该客户的性别为一个指定的性别。户的性别为一个指定的性别。调用存储过程调用存储过程sp_update_sex,将,将id为为2的客户性别的客户性别修改为男性修改为男性”M”Call sp_update_sex(2,M);课堂练习课堂练习在数据库在数据库example中创建一个存储过程,用于实现给中创建一个存储过程
8、,用于实现给定定employee表中给定一个部门号表中给定一个部门号d_id,即可统计出该部门即可统计出该部门的总人数。的总人数。9.1.2 存储过程体存储过程体存储过程体中可以使用各种存储过程体中可以使用各种sql语句和过程式语句的组语句和过程式语句的组合,来封装数据库应用中复杂的业务逻辑和处理规则,以合,来封装数据库应用中复杂的业务逻辑和处理规则,以实现数据库应用的灵活编程。下面主要介绍几个用于构造实现数据库应用的灵活编程。下面主要介绍几个用于构造存储过程体的常用语法元素。存储过程体的常用语法元素。1 局部变量局部变量在存储过程体中可以声明局部变量,用来存储存储过在存储过程体中可以声明局部
9、变量,用来存储存储过程体中临时结果。程体中临时结果。DECLARE var_name,type DEFAULT valueVar_name:指定局部变量的名称指定局部变量的名称Type:用于声明局部变量的数据类型用于声明局部变量的数据类型default子句子句:用于为局部变量指定一个默认值。若没用于为局部变量指定一个默认值。若没有指定,默认为有指定,默认为null.Declare cid int(10);使用说明:使用说明:局部变量只能在存储过程体的局部变量只能在存储过程体的beginend语句块中声语句块中声明。明。局部变量必须在存储过程体的开头处声明。局部变量必须在存储过程体的开头处声明。
10、局部变量的作用范围仅限于声明它的局部变量的作用范围仅限于声明它的begin.end语句语句块,其他语句块中的语句不可以使用它。块,其他语句块中的语句不可以使用它。局部变量不同于用户变量,两者区别:局部变量声明局部变量不同于用户变量,两者区别:局部变量声明时,在其前面没有使用时,在其前面没有使用符号,并且它只能在符号,并且它只能在begin.end语语句块中使用;而用户变量在声明时,会在其名称前面使用句块中使用;而用户变量在声明时,会在其名称前面使用符号,同时已声明的用户变量存在于整个会话之中。符号,同时已声明的用户变量存在于整个会话之中。2 set语句语句使用使用set语句为局部变量赋值语句为
11、局部变量赋值Set var_name=exprSet cid=910;3 select into 语句语句把选定列的值直接存储到局部变量中,语法格式把选定列的值直接存储到局部变量中,语法格式Select col_name,into var_name,table_exprCol_name:用于指定列名用于指定列名Var_name:用于指定要赋值的变量名用于指定要赋值的变量名Table_expr:表示表示select语句中的语句中的from字句及后面的字句及后面的语法部分语法部分说明说明:存储过程体中的存储过程体中的selectinto语句返回的结果集语句返回的结果集只能有一行数据。只能有一行数据
12、。4 定义处理程序定义处理程序是事先定义程序执行过程中可能遇到的问题。并且可是事先定义程序执行过程中可能遇到的问题。并且可以在处理程序中定义解决这些问题的办法。这种方式可以以在处理程序中定义解决这些问题的办法。这种方式可以提前预测可能出现的问题,并提出解决方法。提前预测可能出现的问题,并提出解决方法。DECLARE handler_type HANDLER FOR condition_value,sp_statementhandler_type:CONTINUE|EXIT|UNDOCondition_value:Sqlwarning|not found|sqlexception5 流程控制语句
13、流程控制语句(1)条件判断语句)条件判断语句If语句语句If search_condition then statement_listelseif search_condition then statement_listelse statement_listEnd ifSearch_condition参数参数:条件判断语句条件判断语句Statement_list参数参数:不同条件的执行语句不同条件的执行语句Case 语句语句表达形式表达形式1Case case_valueWhen when_value then statement_listWhen when_value then statem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql 存储 过程 函数
限制150内