函數與存儲過程類似,也是一組預先編譯好的SQL語句的集合,但是存儲過程可以有0個或多個返回,函數就隻能有一個返回
創建函數
#語法 參數列表包含兩部分 參數名和參數類型
#函數體必須有return語句 且每個sql語句後要以;結尾 所以需要使用delimiter來重新設置結束标記
#函數體中隻有一句話時可以省略begin end
create function 函數名(參數列表) returns 返回值類型
begin
函數體
end
select 函數名(參數列表)
show create function 函數名;
drop function 函數名;
delimiter $
create function myfunc(class_name varchar(20)) returns int
begin
declare c int default 0; #設置局部變量,作為返回值
select count(s.id) into c # 将查詢結果賦給局部變量
from class c
join student s on c.id = s.classid
where c.name = class_name;
return c; #返回
end $
delimiter ;
select myfunc('計算機一班');#函數調用
特别提醒一下:我在創建函數的時候出錯了
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe logbintrustfunctioncreators variable)
需要設置一下
set global log_bin_trust_function_creators=TRUE;
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!