1、mysql(7)---儲存過程
2、mysql(8)---游標
3、mysql(9)---紀錄一次實際開發過程中用到的複雜儲存過程
它們唯一不不同點
在於
儲存過程
:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新
函式
:有且僅有1 個返回,適合做處理資料後返回乙個結果。
1、建立函式
create function 函式名(引數列表) returns 返回型別
begin
函式體end/*
注意:1、引數列表 包含兩部分:引數名 引數型別
2、函式體:肯定會有return語句,如果沒有會報錯
如果return語句沒有放在函式體的最後也不報錯,但不建議
3、函式體中僅有一句話,則可以省略begin end
4、使用 delimiter語句設定結束標記
*/
2、呼叫函式select 函式名(引數列表)
3、檢視函式show function status;
4、刪除函式drop function if exists function_name;
先把例子需要用到表給出
# 商品表
drop table if exists `mall_pro`;
create table `mall_pro` (
`mall_id` char(32) not null,
`pro_name` varchar(32) default '' comment '顯示名稱',
`cash_cost` double(10,1) default '0.0' comment '商品**',
`show_member` int(1) default '0' comment '顯示 0所有 1指定會員',
`status` int(1) default '1' comment '狀態:1正常 0刪除',
`key_id` varchar(32) default '0' comment '會員控制項表key',
primary key (`mall_id`)
) engine=innodb default charset=utf8 comment='商品表';
insert into `mall_pro` (`mall_id`, `pro_name`, `cash_cost`, `show_member`, `status`, `key_id`)
values
('1','手錶',100.0,0,1,'0'),
('2','手機',888.0,1,1,'0'),
('3','電腦',3888.0,1,1,'0');
1、無參#案例:返回商品的個數
delimiter $
drop function if exists myf1;
create function myf1() returns int
begin
declare c int default 0;#定義區域性變數
select count(*) into c#賦值
2、有參
# 案例:根據商品名稱返回商品**
delimiter $
drop function if exists myf2$
create function myf2(proname varchar(20)) returns double
begin
set @sal=0;#定義使用者變數
select cash_cost into @sal #賦值
from mall_pro
where pro_name = proname;
return @sal;
end $
select myf2('手錶') $
這個會發現報異常
原因
在儲存過程或者函式,傳人引數是中文的時候,那麼就需要將引數的型別varchar
改成nvarchar
;
3、實現傳入兩個float,返回二者之和
只要自己變優秀了,其他的事情才會跟著好起來(少將11)
mysql自定義函式優點 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...
mysql自定義函式命名 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...
mysql 自定義函式
今天要做乙個排序,有中文和英文的,資料庫採用utf8編碼,排除來的不對,所以需要將中文轉換成中文的第乙個字母,然後來排序 先小小的看一下mysql的自定義函式 drop function if exists fntable 如果存在就刪除 delimiter 函式開始 create function...