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