失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

如何在mysql中创建过程_如何在MySQL 中创建存储过程?

时间:2018-12-30 04:10:54

相关推荐

如何在mysql中创建过程_如何在MySQL 中创建存储过程?

问题阐述

自MySQL 5.0 开始,MySQL 就支持存储过程。存储过程是一些被用户定义的SQL 语句集合。一个存储程序是可以被存储在服务器中的一套SQL 语句。存储过程可以被程序、触发器或另一个存储过程调用。其具有执行速度快、提高系统性能、确保数据库安全等诸多优点。那么如何在MySQL 中创建存储过程呢?

专家解答

1.存储过程创建解析

在MySQL 中,创建存储过程的基本形式如下:

CREATE PROCEDURE sp_name ([proc_parameter[,…]])

[characteristic…] routine_body

其中sp_name 参数是存储过程的名称;proc_parameter 表示存储过程的参数列表;characteristic 参数指定存储过程的特性;routine_body 参数是SQL 代码的内容。

proc_parameter 中的参数由3 部分组成,它们分别是输入输出类型、参数名称和参数类型。

其形式为[IN|OUT|INOUT]param_name type。其中IN 表示输入参数;OUT 表示输出参数;INOUT表示既可以输入也可以输出;param_name 参数是存储过程参数名称;type 参数指定存储过程的参数类型,该类型可以为MySQL 数据库的任意数据类型。

一个存储过程包括名字,参数列表,还可以包括很多SQL 语句集。下面创建一个存储过程,其代码如下:

delimiter //

create procedure proc_name (in parameter integer)

begin

declare variable varchar(20);

if parameter=1 then

set variable='MySQL';

else

set variable=’PHP’;

end if;

insert into tb (name) values (variable);

end;

MySQL 中存储过程的建立以关键字create procedure 开始,后面仅跟存储过程的名称和参数。MySQL 的存储过程名称不区分大小写,如PROCE1()和proce1()代表同一存储过程名。存储过程名或存储函数名不能与MySQL 数据库中的内建函数重名。

MySQL 存储过程的语句块以begin 开始,以end 结束。语句体中可以包含变量的声明、控制语句、SQL 查询语句等。由于存储过程内部语句要以分号结束,所以在定义存储过程前,应将语句结束标志“;”更改为其他字符,并且应降低该字符在存储过程中出现的机率,更改结束标志可以用关键字“delimiter”定义,例如:

mysql>delimiter //

存储过程创建之后,可用如下语句进行删除,参数proc_name 指存储过程名。

drop procedure proc_name

2.应用示例

下面创建一个名称为count_of_sutdent 的存储过程。首先,创建一个名称为students 的MySQL 数据库,然后创建一个名为studentinfo 的数据表。数据表结构如表4.3 所示。

创建一个名称为count_of_student 的存储过程,统计studentinfo 数据表中的记录数。代码如下:

delimiter //

create procedure count_of_student(OUT count_num INT)

reads sql data

begin

select count(*) into count_num from studentinfo;

end

//

在上述代码中,定义一个输出变量count_num。

存储过程应用SELECT 语句从studentinfo 表中获取记录总数。最后将结果传递给变量count_num。存储过程的执行结果如图4.43 所示。

图4.43 创建存储过程count_of_student

专家点评

MySQL 中使用CALL 语句来调用存储过程。调用存储过程后,数据库系统将执行存储过程中的语句。然后将结果返回给输出值。CALL 语句的基本语法形式如下:

CALL sp_name([parameter[,…]]);

其中sp_name 是存储过程的名称,parameter 是存储过程的参数。

如果觉得《如何在mysql中创建过程_如何在MySQL 中创建存储过程?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。