一:储存过程(procedure)
本质上没区别,执行的本质都一样。
只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程要让sql的query 可以执行, 需要把 mysql_real_connect 的最后一个参数设置为CLIENT_MULTI_STATEMENTS。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少。
语法:
create procedure procedure_name([procedure_parameter[,....]])
[characteristic...] routing_body
procedure_parameter每个参数语法如
procedure_parameter每个参数语法如下:
[in|out|inout\ parameter_name type
每个参数有三个部分组成,分别为输入/输出类型,参数名,参数类型
输入/输出类型:in 代表输入,out代表输出,inout 代表输入/输出类型.
parameter_name 代表参数名字,type代表类型
例如:
delmiter $$
create procedure procedure_student_id(in name varchar(20))
begin
select student_id from student_info where name=student_name;
end$$
使用储存函数 call procedure_student_id('小明');
二:函数
create function function_name([function_parameter[,...]])
[characteristic...] routing_body
例如:
create function search_id(name varchar(20))
returns int /*返回类型*/
begin
return (select student_id from students_info where name=student_name);
end$$
delimiter ;
使用函数:select search_id('xiaoming');