一文入門(mén)SQL——自定義函數(shù)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
本篇講的是自定義函數(shù)(Function)。 當(dāng)我們學(xué)習(xí)編程語(yǔ)言的時(shí)候,也會(huì)遇到函數(shù)。函數(shù)的作用是什么呢?它可以把我們經(jīng)常使用的代碼封裝起來(lái),需要的時(shí)候直接調(diào)用即可。這樣既提高了代碼效率,又提高了可維護(hù)性。 SQL 中的函數(shù)一般是在數(shù)據(jù)上執(zhí)行的,可以很方便地轉(zhuǎn)換和處理數(shù)據(jù)。一般來(lái)說(shuō),當(dāng)我們從數(shù)據(jù)表中檢索出數(shù)據(jù)之后,就可以進(jìn)一步對(duì)這些數(shù)據(jù)進(jìn)行操作,得到更有意義的結(jié)果,比如返回指定條件的函數(shù),或者求某個(gè)字段的平均值等。 SQL中的函數(shù)包含內(nèi)置函數(shù)和自定義函數(shù),本文講解自定義函數(shù)。 用戶定義函數(shù)與編程語(yǔ)言中的函數(shù)相似,其結(jié)構(gòu)與存儲(chǔ)過(guò)程相似,但函數(shù)必須有一個(gè)RETURN子句,用于返回函數(shù)值。函數(shù)說(shuō)明要說(shuō)明函數(shù)名、結(jié)果值的類型,以及參數(shù)類型等。 注意:以下全部是以MySQL為演示,其他類型數(shù)據(jù)庫(kù)語(yǔ)法可能不一致。 一、創(chuàng)建自定義函數(shù) (1)創(chuàng)建計(jì)算立方體體積的標(biāo)量函數(shù),此函數(shù)有三個(gè)輸入?yún)?shù),分別為正方體的長(zhǎng)寬高,類型均為整型,返回值體積也是整型: #解決1418號(hào)報(bào)錯(cuò)(臨時(shí)生效,重啟后失效) set global log_bin_trust_function_creators=TRUE;
delimiter $$ CREATE FUNCTION CubicVolume (CubeLength int,CubeWidth int,CubeHeight int) RETURNS int RETURN (CubeLength*CubeWidth*CubeHeight); $$ delimiter; #定義標(biāo)量函數(shù) delimiter $$ CREATE FUNCTION GoodsCount(class varchar(10)) RETURNS int BEGIN DECLARE x int; SET x=( SELECT count(*) FROM Tbl_GoodsClass a JOIN Tbl_Goods b ON a.GoodsClassID=b.GoodsClassID WHERE GoodsClassName=class); RETURN x; END; $$ delimiter; SELECT CubicVolume(2,3,4) ; #查詢運(yùn)動(dòng)器材的種類數(shù) SELECT GoodsCount('運(yùn)動(dòng)器材'); 刪除GoodsCount函數(shù)的語(yǔ)句如下: drop Function GoodsCount; 這樣就把創(chuàng)建好的函數(shù)給刪除了。 文中有個(gè)小點(diǎn)需要注意一下,直接運(yùn)行自定義函數(shù)將會(huì)出現(xiàn)1418錯(cuò)誤,這個(gè)我們可以通過(guò)運(yùn)行 set global log_bin_trust_function_creators=TRUE; 或者 set global log_bin_trust_function_creators=1; 來(lái)解決,不過(guò)這個(gè)是臨時(shí)生效,重啟應(yīng)用后失效,更詳細(xì)的解決方案可訪問(wèn)https://blog.csdn.net/qq_38361800/article/details/105950335來(lái)解決。 該文章在 2024/3/29 23:23:24 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |