這幾天學了儲存過程和函式,總結的不是太完整,先記下來。
#儲存過程
/*含義:一組經過預先編譯的sql語句的集合
好處:1、提高了sql語句的重用性,減少了開發程式設計師的壓力
2、提高了效率
3、減少了傳輸次數
分類:1、無返回無參
2、僅僅帶in型別,無返回有參
3、僅僅帶out型別,有返回無參
4、既帶in又帶out,有返回有參
5、帶inout,有返回有參
注意:in、out、inout都可以在乙個儲存過程中帶多個
*/案例
#1.建立儲存過程或函式實現傳入使用者名稱和密碼,插入到admin表中
delimiter $
create procedure test_pro1(in username varchar(20),in psw varchar(20))
begin
insert into admin(username,password) values('123','123');
end $
#2.建立儲存過程或函式實現傳入女神編號,返回女神名稱和女神**
create procedure test_pro2(in beautyid int,out bname varchar(20),out bphone varchar(20))
begin
select name,phone into bname,bphone
from beauty b
where id = beautyid;
end $
#3.建立儲存儲存過程或函式實現歘人兩個女神生日,返回大小
create procedure test_pro7(in bdate1 datetime,in bdate2 datetime,out result int)
begin
case
when datediff(bdate1,bdate2`beauty`)>0 then select 1 into result;
when datediff(bdate1,bdate2)=0 then select 0 into result;
else select -1 into result;
end case;
end$
#呼叫call ('1995-5-5','1996-6-6',@r);
select @r$
#四、建立儲存過程或函式實現傳入乙個日期,格式化成xx年xx月xx日並返回
create procedure test_pro8(in mydate datetime,out formatdate varchar(20))
begin
select date_format(mydate,'%y年%m月%d日') into formatdate;
end$
#五、建立儲存過程或函式實現傳入女神名稱,返回:女神 and 男神 格式的字串
#如 傳入 :小昭
#返回: 小昭 and 張無忌
create procedure test_pro9(in bname varchar(20),out result varchar(20))
begin
select concat(bname,' and ',ifnull(boyname,'無')) into result
from boys b
join beauty be on b.id = be.boyfriend_id
where be.name = bname;
end$
call test_pro9('趙敏',@r)$
select @r$
#六、建立儲存過程或函式,根據傳入的條目數和起始索引,查詢beauty表的記錄
create procedure test_pro12(in size int,in startindex int)
begin
select * from beauty
limit startindex,size;
end$
call test_pro12(5,1);
函式#函式
#一、建立函式
學過的函式:length、substr、concat等
語法:create function 函式名(引數名 引數型別,...) returns 返回型別
begin
函式體end
#二、呼叫函式
select 函式名(實參列表)
案例
#案例1:歘人乙個女生名稱,返回對應男神名,如果沒有該男神,則返回null
create function my_fun1(bname varchar(20)) returns varchar(20)
begin
declare boyname varchar(20);#宣告乙個變數
select boys.`boyname` into boyname
from boys
right join beauty b
on boys.`id`=b.boyfriend_id
where b.name=bname;
return boyname;
end $
#案例2:傳入使用者名稱和密碼,返回admin表中該使用者的記錄數
create function my_fun2(username varchar(20),password varchar(20)) returns int
begin
declare i int default 0;
select count(*) into i
from admin
where admin.username=username and admin.password=password;
return i;
end $
三、函式和儲存過程的區別
函式:關鍵字 function ,呼叫語法 select 函式() ,返回值 只能是乙個 , 應用場景 一般用於查詢結果為乙個值並返回時,當有返回值而且僅僅乙個
儲存過程:關鍵字 procedure ,呼叫語法 call 儲存過程(), 返回值 可以有0個或多個, 應用場景 一般用於更新
mysql 過程和函式 MySQL 儲存過程和函式
變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...
MySQL儲存過程和儲存函式
儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...
Mysql 儲存過程和函式
一 儲存過程 procedure 本質上沒區別,執行的本質都一樣。只是函式有如 只能返回乙個變數的限制。而儲存過程可以返回多個。函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程要讓sql的query 可以執行,需要把 mysql real connect 的最後乙個引數設定為cl...