一、存儲過程
含義:一組預先編譯好的SQL語句的集合
1.創建語法
create procedure 存儲過程名(參數列表)
begin
存儲過程體(一組SQL語句)
end
參數列表包含三部分:參數模式、參數名、參數類型
參數模式:in、out、inout
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個返回,適合做處理數據後返回一個結果