mysql存储过程和函数

mysql存储过程和函数

ID:37250680

大小:270.31 KB

页数:37页

时间:2019-05-12

mysql存储过程和函数_第1页
mysql存储过程和函数_第2页
mysql存储过程和函数_第3页
mysql存储过程和函数_第4页
mysql存储过程和函数_第5页
资源描述:

《mysql存储过程和函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9讲存储过程与存储函数存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输。9.1创建存储过程和函数创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中。例如,银行经常需要计算用户的利息。不同类别的用户的利率是不一样的。这就可以将计算利率的

2、SQL代码写成一个存储过程或者存储函数。只要调用这个存储过程或者存储函数,就可以将不同类别用户的利息计算出来。9.1.1创建存储过程MySQL中,创建存储过程的基本形式如下:CREATEPROCEDUREsp_name([proc_parameter[,...]])[characteristic...]routine_bodySp_name:存储过程的名称,默认在当前数据库中创建。这个名称应当尽量避免与MySQL的内置函数相同的名称Proc_parameter:存储过程的参数列表格式[IN

3、OUT

4、INOUT

5、]param_nametypeParam_name为参数名,type为参数的数据类型。多个参数彼此间用逗号分隔。输入参数、输出参数和输入/输出参数,分别用in/out/inout标识。参数的取名不要与数据表的列名相同。Characteristic:存储过程的某些特征设定,分别介绍1COMMENT’string’:用于对存储过程的描述,其中string为描述内容,comment为关键字。2LANGUAGESQL:指明编写这个存储过程的语言为SQL语言。这个选项可以不指定。3DETERMINISTIC:表示存储过

6、程对同样的输入参数产生相同的结果;NOTDETERMINISTIC,则表示会产生不确定的结果(默认)。4containssql

7、nosql

8、readssqldata

9、modifiessqldataContainssql表示存储过程包含读或写数据的语句(默认)Nosql表示不包含sql语句Readssqldata表示存储过程只包含读数据的语句Modifiessqldata表示存储过程只包含写数据的语句5sqlsecurity:这个特征用来指定存储过程使用创建该存储过程的用户(definer)的许可来执行,还是使

10、用调用者(invoker)的许可来执行。默认是definerRoutine_body:存储过程的主体部分,包含了在过程调用的时候必须执行的sql语句。以begin开始,以end结束。如果存储过程体中只有一条sql语句,可以省略begin-end标志。例题在数据库example中创建一个存储过程,用于实现给定表customers中一个id号即可修改表customers中该客户的性别为一个指定的性别。调用存储过程sp_update_sex,将id为2的客户性别修改为男性”M”Callsp_update_sex(2

11、,’M’);课堂练习在数据库example中创建一个存储过程,用于实现给定employee表中给定一个部门号d_id,即可统计出该部门的总人数。9.1.2存储过程体存储过程体中可以使用各种sql语句和过程式语句的组合,来封装数据库应用中复杂的业务逻辑和处理规则,以实现数据库应用的灵活编程。下面主要介绍几个用于构造存储过程体的常用语法元素。1局部变量在存储过程体中可以声明局部变量,用来存储存储过程体中临时结果。DECLAREvar_name[,…]type[DEFAULTvalue]Var_name:指定局部变

12、量的名称Type:用于声明局部变量的数据类型default子句:用于为局部变量指定一个默认值。若没有指定,默认为null.Declarecidint(10);使用说明:局部变量只能在存储过程体的begin…end语句块中声明。局部变量必须在存储过程体的开头处声明。局部变量的作用范围仅限于声明它的begin..end语句块,其他语句块中的语句不可以使用它。局部变量不同于用户变量,两者区别:局部变量声明时,在其前面没有使用@符号,并且它只能在begin..end语句块中使用;而用户变量在声明时,会在其名称前面使用

13、@符号,同时已声明的用户变量存在于整个会话之中。2set语句使用set语句为局部变量赋值Setvar_name=exprSetcid=910;3select…into语句把选定列的值直接存储到局部变量中,语法格式Selectcol_name[,…]intovar_name[,…]table_exprCol_name:用于指定列名Var_name:用于指定要赋值的变量名Table_expr:表示sel

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。