Mysql存储过程和函数区别介绍
存儲存儲過程 是一段代碼(過程),存儲在數據庫中的SQL組成。一個存儲過程通常用于完成一段業務邏輯,例如報名,交班費,訂單入庫等。
而一個函數通常專注與某個功能,視為其他程序服務的,需要在其他語句中調用函數才可以,而存儲過程不能被其他調用,是自己執行 通過call執行。
存儲過程和函數都是屬于某個數據庫。
存儲
創建無參存儲過程:
delimiter $$ CREATE PROCEDURE showTime()BEGINSELECT now();END$$ delimiter ; CALL showTime; USE test; DELIMITER $$DROP FUNCTION IF EXISTS func4 $$ CREATE FUNCTION func4() RETURNS INT BEGIN#DECLARE var_name[,...] type [DEFAULT value] #這個語句被用來聲明局部變量。要給變量提供一個默認值,請包含一個DEFAULT子句。值可以被指定為一個表達式,不需要為一個常數。如果沒有DEFAULT子句,初始值為NULL。 #使用 set 和 select into語句為變量賦值。#全局變量SET @i=0;SET @sum=0;#如果需要在循環內提前終止 while循環,則需要使用標簽;標簽需要成對出現。w:WHILE @i<=10 DOIF @i=5 THENSET @i=@i+1;-- leave w;ITERATE w;END IF;SET @sum=@sum+@i;SET @i=@i+1;END WHILE w;RETURN @sum; END $$ DELIMITER ;SELECT func4();存儲過程和函數存在以下幾個區別:
1)一般來說,存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。
2)函數只能返回一個變量;而存儲過程可以返回多個。存儲過程的參數可以有IN,OUT,INOUT三種類型,而函數只能有IN類。存儲過程聲明時不需要返回類型,而函數聲明時需要描述返回類型,且函數體中必須包含一個有效的RETURN語句。
3)存儲過程一般是作為一個獨立的部分來執行( EXECUTE 語句執行),而函數可以作為sql語句的一個部分來調用。
存儲過程存在的必要性(好處):
存儲過程說白了就是把經常使用的SQL語句或業務邏輯封裝起來,預編譯保存在數據庫中,當需要的時候從數據庫中直接調用,省去了編譯的過程.
提高了運行速度; 同時降低網絡數據傳輸量(你覺得傳一堆SQL代碼快,還是傳一個存儲過程名字和幾個參數快???)
Mysql存儲過程和函數區別介紹
https://www.cnblogs.com/lucky-man/p/6124475.html
非典型性程序員
https://www.cnblogs.com/caoruiy/p/4486249.html
總結
以上是生活随笔為你收集整理的Mysql存储过程和函数区别介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-cli 3.0安装和使用
- 下一篇: 程序员英文简历范例(前端)