MySQL入门教程第31篇存

文员求职招聘微信群 https://www.edunews.net.cn/2021/ywbb_0920/136551.html

接下来的两篇文章我们将会介绍MySQL存储过程和函数。本篇主要介绍它们的概念和管理,下一篇将会讨论如何编写存储过程和函数来实现业务需求。

31.1存储过程简介

MySQL存储过程(Storedprocedure)是一种存储在数据库中的程序。它可以包含多个SQL语句,提供许多过程语言的功能,例如变量定义、条件语句、循环语句、游标以及异常处理等。存储过程没有返回值,但是它可以通过输出参数实现数据的返回,同时还可以产生一个查询结果返回到客户端。

在数据库中创建存储过程之后,应用程序或其他存储过程可以通过名称对其进行重复调用。

在介绍存储过程的管理之前,我们还需要了解一下它的优缺点,存储过程的主要优点包括:

实现代码的重用和集中管理。存储过程存储在数据库中,可以被重复调用,不同的应用可以共享存储过程;

实现业务的封装和隔离。应用程序通过接口访问存储过程;当业务发生变化时,只需要修改存储过程的逻辑,对应用程序毫无影响;

减少了应用与数据库之间的网络流量。调用存储过程时,只需要传递参数,在一定程度上可以减轻网络负担;

存储过程可以提高安全性。应用程序通过存储过程进行数据访问,而不需要直接访问数据表,保证数据的安全。

不过,存储过程也存在一些缺点:

MySQL存储过程的语法和其他数据库之间不兼容,无法直接移植;

存储过程需要占用数据库服务器的资源,包括CPU、内存等。MySQL对于大量逻辑处理的支持不够完善;

存储过程的开发和维护需要专业的技能。MySQL存储过程不支持调试功能,增加了应用程序的开发和维护难度。

一般来说,对于业务快速变化的互联网应用,倾向于将业务逻辑放在应用层,便于扩展;对于传统行业,或者复杂的报表分析,合理使用存储过程可以提高效率。31.2创建存储过程

MySQL使用CREATEPROCEDURE语句创建存储过程:

CREATEPROCEDUREsp_name([IN

OUT

INOUT]param_namedata_type,...)routine_body;

其中,sp_name是存储过程名称;param_name是参数名称,IN表示输入参数(默认模式),OUT表示输出参数,INOUT表示输入输出参数;data_type是参数的数据类型;routine_body是存储过程的具体实现。

下面是一个创建存储过程的示例:

DELIMITERCREATEPROCEDUREGetDevelopers()BEGINSELECTemp_name,sex,hire_date,salary,bonus,emailFROMemployeeWHEREdept_id=4;ENDDELIMITER;

其中,DELIMITER不属于存储过程的内容。由于很多MySQL客户端将分号(;)作为SQL语句的终止符,而存储过程中包含多个语句;为了将存储过程的定义整体发送到服务器,需要将终止符临时修改为其他符号(例如),最后再将其改回分号。BEGIN和END表示程序主体的开始和结束。

存储过程GetDevelopers没有参数,程序体中包含了一个查询语句,用于返回开发部门的员工信息。MySQL使用CALL语句调用存储过程,例如:

CALLGetDevelopers();emp_name

sex

hire_date

salary

bonus

email

--------

---

----------

--------

-----

-------------------

赵云

-12-19

.00

0.00

zhaoyun

shuguo.


转载请注明:http://www.aierlanlan.com/cyrz/899.html