mysql中存储过程和函数区别
概述
1)一般來說,存儲(chǔ)過程實(shí)現(xiàn)的功能要復(fù)雜一點(diǎn),而函數(shù)的實(shí)現(xiàn)的功能針對(duì)性比較強(qiáng)。存儲(chǔ)過程,功能強(qiáng)大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫操作;用戶定義函數(shù)不能用于執(zhí)行一組修改全局?jǐn)?shù)據(jù)庫狀態(tài)的操作。
2)對(duì)于存儲(chǔ)過程來說可以返回參數(shù),如記錄集,而函數(shù)只能返回值或者表對(duì)象。函數(shù)只能返回一個(gè)變量;而存儲(chǔ)過程可以返回多個(gè)。存儲(chǔ)過程的參數(shù)可以有IN,OUT,INOUT三種類型,而函數(shù)只能有IN類~~存儲(chǔ)過程聲明時(shí)不需要返回類型,而函數(shù)聲明時(shí)需要描述返回類型,且函數(shù)體中必須包含一個(gè)有效的RETURN語句。
3)存儲(chǔ)過程,可以使用非確定函數(shù),不允許在用戶定義函數(shù)主體中內(nèi)置非確定函數(shù)。
4)存儲(chǔ)過程一般是作為一個(gè)獨(dú)立的部分來執(zhí)行( EXECUTE 語句執(zhí)行),而函數(shù)可以作為查詢語句的一個(gè)部分來調(diào)用(SELECT調(diào)用),由于函數(shù)可以返回一個(gè)表對(duì)象,因此它可以在查詢語句中位于FROM關(guān)鍵字的后面。 SQL語句中不可用存儲(chǔ)過程,而可以使用函數(shù)。
1.創(chuàng)建存儲(chǔ)過程和函數(shù)語法
CREATE PROCEDURE sp_name ([proc_parameter[,...]])[characteristic ...] routine_bodyCREATE FUNCTION sp_name ([func_parameter[,...]])RETURNS type[characteristic ...] routine_bodyproc_parameter:[ IN | OUT | INOUT ] param_name typefunc_parameter:param_name typetype:Any valid MySQL data type2.修改存儲(chǔ)過程函數(shù)語法
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]characteristic:{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }| SQL SECURITY { DEFINER | INVOKER }| COMMENT 'string'3.刪除存儲(chǔ)過程函數(shù)語法
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name4.查看存儲(chǔ)過程和函數(shù)
1.查看存儲(chǔ)過程狀態(tài)SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern'] show procedure status like 'Pro_Employee' \G 2.查看存儲(chǔ)過程和函數(shù)的創(chuàng)建語法 SHOW CREATE {PROCEDURE | FUNCTION} sp_nameSHOW CREATE PROCEDURE Pro_Employee \G; 3.查看存儲(chǔ)過程和函數(shù)詳細(xì)信息 SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='Pro_Employee' \G;
總結(jié)
以上是生活随笔為你收集整理的mysql中存储过程和函数区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: three.js script vert
- 下一篇: Mysql函数和存储过程