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個返回,適合做處理數據後返回一個結果

 

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