這篇文章將為大家詳細講解有關(guān)中存儲函數的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
存儲函數
什么是存儲函數: 封裝一段sql代碼,完成一種特定的功能,返回結果。
存儲函數的語(yǔ)法:
create function 函數([函數參數[,….]]) Returns 返回類(lèi)型 Begin If( Return (返回的數據) Else Return (返回的數據) end if; end;
例如: create function count_news(hits int) returns int
與存儲過(guò)程返回參數不同的是存儲函數在定義時(shí)沒(méi)用直接聲明哪個(gè)變量是返回參數,而只是使用了returns聲明了返回參數所屬的數據類(lèi)型,返回參數是在函數體中使用return返回要返回的數據變量的形式來(lái)表示的。這就需要注意的是:
存儲函數只支持輸入參數,并且輸入參數前沒(méi)有IN或INOUT.
存儲函數中的限制
流控制(Flow-of-control)語(yǔ)句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,ITERATE)也是合法的.
變量聲明(DECLARE)以及指派(SET)是合法的.
允許條件聲明.
異常處理聲明也是允許的.
但是在這里要記住函數有受限條件:不能在函數中訪(fǎng)問(wèn)表.因此在函數中使用以下語(yǔ)句是非法的。
ALTER 'CACHE INDEX' CALL COMMIT CREATE DELETE
DROP 'FLUSH PRIVILEGES' GRANT INSERT KILL
LOCK OPTIMIZE REPAIR REPLACE REVOKE
ROLLBACK SAVEPOINT 'SELECT FROM table'
'SET system variable' 'SET TRANSACTION'
SHOW 'START TRANSACTION' TRUNCATE UPDATE
存儲函數與存儲過(guò)程的區別
一、 存儲函數有且只有一個(gè)返回值,而存儲過(guò)程不能有返回值。
二、 函數只能有輸入參數,而且不能帶in, 而存儲過(guò)程可以有多個(gè)in,out,inout參數。
三、 存儲過(guò)程中的語(yǔ)句功能更強大,存儲過(guò)程可以實(shí)現很復雜的業(yè)務(wù)邏輯,而函數有很多限制,如不能在函數中使用insert,update,delete,create等語(yǔ)句;存儲函數只完成查詢(xún)的工作,可接受輸入參數并返回一個(gè)結果,也就是函數實(shí)現的功能針對性比較強。
四、 存儲過(guò)程可以調用存儲函數。但函數不能調用存儲過(guò)程。
五、 存儲過(guò)程一般是作為一個(gè)獨立的部分來(lái)執行(call調用)。而函數可以作為查詢(xún)語(yǔ)句的一個(gè)部分來(lái)調用。
實(shí)例1:
實(shí)現目的:
從表1中取所有人員列表,從表2中取上機次數和管理員.
上機人員名單 上機次數 管理員
秦云 3 李大偉,馬化騰,李大偉
在路上 2 馬化騰,李大偉
LEO 0
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站