MySQL存储过程与函数的使用

一、存储过程

含义:一组预先编译好的SQL语句的集合

1.创建语法

create procedure 存储过程名(参数列表)
begin
    存储过程体(一组SQL语句)
end

参数列表包含三部分:参数模式参数名参数类型

参数模式:inoutinout

2.调用语法

call 存储过程名(实参列表);

3.删除语法

drop procedure 存储过程名;

4.示例

1) 创建

delimiter $
create procedure proc_student(in idparam int, out nameparam varchar(20))
begin
	select name into nameparam
	from student
	where id=idparam;
end $

2) 调用

set @idparam=1;
set @nameparm='';
call proc_student(@idparam, @nameparam);
select @nameparam;

3) 删除

drop procedure proc_student;

二、函数

1.创建语法

create function 函数名(参数列表) returns 返回类型
begin
    函数体
end

参数列表包含两部分:参数名参数类型

函数体:必须有return语句,否则会报错

2.调用语法

select 函数名(参数列表);

3.删除语法

drop function 函数名;

4.示例

1) 创建

如果有error 1418错误,就加上deterministic

delimiter $
create function func_sum(a int, b int) returns int deterministic
begin
	declare res int default 0;
	set res = a + b;
	return res;
end $

没有deterministic可能会报错

2) 调用

select func_sum(1,2);

3) 删除

drop function func_sum;

三、存储过程与函数的区别

存储过程:可以有0个返回,也可以有多个返回,适合批量插入,批量更新

函数:有且仅有1个返回,适合做处理数据后返回一个结果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章