MySQL的存储过程

存储过程和存储函数经常是一组SQL语句的组合,这些语句被当作整体存入MYSQL

数据库服务器中。用户定义的存储函数不能用于修改全局库状态,但该函数可从查询中

被唤醒调用,也可像存储过程一样通过语句执行。

mysql中创建存储过程的基本形式如下:

create procedure sp_name([proc_parameter[]])

       [characteristic...]routine_body

其中sp_name 参数是存储过程的名称;proc_parameter 表示存储过程的参数列表;

characteristic参数指定存储过程的特性;routine_body参数是sql代码的内容,执行语句。

其中pro_parameter中的参数由3部分组成:输入输出类型、参数名称、参数类型。形式为:

[in|out|inout]param_name type。其中in表示输入参数;out表示输出参数;inout表示既可输出

也可输入;param_name参数是存储过程参数名称;type参数指定存储过程的参数类型,该类型

可以为MYSQL数据库的任意数据类型.

例:

delimiter//

create procedure pro_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的存储过程名称不区分大小写。存储过程名或存储函数名不能与MYSQL数据库中的

内建函数重名。

MYSQL存储过程的语句块以begin开始,以end结束。语句体中可以包含变量的声明、控制语句

SQL查询语句等。由于存储过程内部语句要以分号结束,所以在定义存储过程前,应将语句

结束标志‘;‘更改为其他字符,并应降低该字符在存储过程中出现的几率。

更改结束标志可用关键字‘delimiter’定义,例如:

mysql>delimiter//

存储过程创建后,可以用如下语句删除,参数proc_name指存储过程名:

drop procedure pro_name.

存储过程例2

delimiter//

create procedure count_of_student(out count_num int)

reads sql data

begin 

select count(*) into count_num from studentinfo;

end

//

该存储过程先用select 语句从studentinfo 表中获取记录总数,然后将结果传递给变量count_num.

原文地址:https://www.cnblogs.com/Ting-light/p/9548518.html