mysql中存储过程和函数区别
生活随笔
收集整理的這篇文章主要介紹了
mysql中存储过程和函数区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
概述
1)一般來說,存儲過程實現(xiàn)的功能要復雜一點,而函數(shù)的實現(xiàn)的功能針對性比較強。存儲過程,功能強大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫操作;用戶定義函數(shù)不能用于執(zhí)行一組修改全局數(shù)據(jù)庫狀態(tài)的操作。
2)對于存儲過程來說可以返回參數(shù),如記錄集,而函數(shù)只能返回值或者表對象。函數(shù)只能返回一個變量;而存儲過程可以返回多個。存儲過程的參數(shù)可以有IN,OUT,INOUT三種類型,而函數(shù)只能有IN類~~存儲過程聲明時不需要返回類型,而函數(shù)聲明時需要描述返回類型,且函數(shù)體中必須包含一個有效的RETURN語句。
3)存儲過程,可以使用非確定函數(shù),不允許在用戶定義函數(shù)主體中內(nèi)置非確定函數(shù)。
4)存儲過程一般是作為一個獨立的部分來執(zhí)行( EXECUTE 語句執(zhí)行),而函數(shù)可以作為查詢語句的一個部分來調(diào)用(SELECT調(diào)用),由于函數(shù)可以返回一個表對象,因此它可以在查詢語句中位于FROM關鍵字的后面。 SQL語句中不可用存儲過程,而可以使用函數(shù)。
1.創(chuàng)建存儲過程和函數(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.修改存儲過程函數(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.刪除存儲過程函數(shù)語法
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name4.查看存儲過程和函數(shù)
1.查看存儲過程狀態(tài)SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern'] show procedure status like 'Pro_Employee' \G 2.查看存儲過程和函數(shù)的創(chuàng)建語法 SHOW CREATE {PROCEDURE | FUNCTION} sp_nameSHOW CREATE PROCEDURE Pro_Employee \G; 3.查看存儲過程和函數(shù)詳細信息 SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='Pro_Employee' \G;
總結
以上是生活随笔為你收集整理的mysql中存储过程和函数区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: three.js script vert
- 下一篇: 第二十二篇:Spring简单定时任务