问题阐述
自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 中创建存储过程?》对你有帮助,请点赞、收藏,并留下你的观点哦!