存储过程和存储函数经常是一组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.