新聞中心
day06 MySQL數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程和函數(shù)
一、存儲(chǔ)過(guò)程和函數(shù)的概述:
數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)是指在數(shù)據(jù)庫(kù)中定義的一些sql語(yǔ)句的集合,直接調(diào)用這些存儲(chǔ)過(guò)程的名字或存儲(chǔ)函數(shù)的名字就可以直接使用這些sql??梢员苊忾_(kāi)發(fā)人員大量的寫(xiě)一些sql語(yǔ)句操作數(shù)據(jù),可以減少客戶(hù)端和服務(wù)器端的數(shù)據(jù)傳輸。所以,學(xué)好存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)也是很重要的哦!
二、存儲(chǔ)過(guò)程【procedure】
1、創(chuàng)建存儲(chǔ)過(guò)程
create procedure 自定義一個(gè)存儲(chǔ)名() begin select 語(yǔ)句 end; call 存儲(chǔ)名(); 調(diào)用存儲(chǔ)過(guò)程2、刪除存儲(chǔ)過(guò)程
drop procedure 存儲(chǔ)名;3、帶參數(shù)的存儲(chǔ)過(guò)程
3.1:in參數(shù),即輸入?yún)?shù)
create procedure 存儲(chǔ)名(in 列名 數(shù)據(jù)類(lèi)型) begin select 語(yǔ)句 end; call 存儲(chǔ)名(列名的值);3.2:out參數(shù),即輸出參數(shù)
create procedure 存儲(chǔ)名(out 列名 數(shù)據(jù)類(lèi)型) begin select * into 列名 from 表名; end; call 存儲(chǔ)名(@列名);3.3:inout參數(shù),即輸入輸出參數(shù)
create procedure 存儲(chǔ)名(inout 列名 數(shù)據(jù)類(lèi)型) begin select * into 列名 from 表名; end; set @列名=某個(gè)值 //定義一個(gè)變量并賦值 call 存儲(chǔ)名(@列名);4、定義變量
4.1:定義局部變量
declare a int //定義 set a=10; //賦值 select a; //輸出4.2:定義全局變量“@作為起始符”
set @b=20; //定義會(huì)話變量 select @b; //輸出三、存儲(chǔ)函數(shù)【function】
1、創(chuàng)建存儲(chǔ)函數(shù)定義的實(shí)例。
create function 函數(shù)名(a int , b int) returns int begin declare c int; set c=a+b; return c; end; select 函數(shù)名(a的數(shù)值,b的數(shù)值) //調(diào)用存儲(chǔ)函數(shù)四、光標(biāo)的運(yùn)用
在MySQL查詢(xún)數(shù)據(jù)庫(kù)腫,存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)中使用光標(biāo)可以實(shí)現(xiàn)逐條的讀取結(jié)果集中的記錄。主要包括以下幾個(gè)步驟:
1、聲明光標(biāo):
declare 光標(biāo)名 cursor select_name 譯;select_name:是一個(gè)select語(yǔ)句,返回一行或多行數(shù)據(jù)。實(shí)例:
declare info_student cursor for select sid,name,age from student where sid=1;2、打開(kāi)光標(biāo)
open 光標(biāo)名稱(chēng)3、使用光標(biāo)
fetch 光標(biāo)名稱(chēng) into 列名;4、關(guān)閉光標(biāo)
close 光標(biāo)名稱(chēng)五、查看存儲(chǔ)過(guò)程和函數(shù)
1、使用show status 語(yǔ)句查看
show { procedure | function } status [like 'pattern'] 譯: procedure:表示查詢(xún)存儲(chǔ)過(guò)程 function:表示查詢(xún)存儲(chǔ)函數(shù) like 'pattern':用來(lái)匹配存儲(chǔ)過(guò)程或函數(shù)名稱(chēng)。2、使用show create語(yǔ)句查看
show create { procedure | function } sp_name; 譯; procedure:表示查詢(xún)存儲(chǔ)過(guò)程 function:表示查詢(xún)存儲(chǔ)函數(shù) sp_name:表示存儲(chǔ)過(guò)程或函數(shù)名稱(chēng)3、修改存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)
alter { procedure | function } sp_name { contains sql | no sql | reads sql data | modifies sql data } | sql security { definer | invoker } | comment 'string' 譯: procedure | function:表示是存儲(chǔ)過(guò)程還是存儲(chǔ)函數(shù) sp_name :表示名稱(chēng) contains sql:表示子程序包含sql語(yǔ)句,但是不包含讀寫(xiě)數(shù)據(jù)的語(yǔ)句 no sql:表示子程序包含sql語(yǔ)句 reads sql data:表示子程序中包含讀數(shù)據(jù)的語(yǔ)句 modifies sql data :表示子程序中包含寫(xiě)數(shù)據(jù)的語(yǔ)句 definer | invoker:表示指明權(quán)限執(zhí)行,前者是定義者自己能夠執(zhí)行, 后者是調(diào)用者可以執(zhí)行 comment 'string':注釋信息4、刪除存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)
drop { procedure | function } sp_name六、結(jié)束語(yǔ):
學(xué)到這里,存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)就已經(jīng)學(xué)完了哦!好好消化一下吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱(chēng):MySQL數(shù)據(jù)庫(kù)提升篇-----存儲(chǔ)過(guò)程和函數(shù)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://fisionsoft.com.cn/article/dcscjg.html