MySQL存储过程和函数(一)
生活随笔
收集整理的這篇文章主要介紹了
MySQL存储过程和函数(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、創建procedure和function CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type [characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
routine_body:
Valid?SQL?procedure?statement?or?statements ? (1)默認子程序和數據庫相連,如:db_name.sp_name. ( 2 ) sp_name的名字最好是唯一 (3) 參數為IN, OUT, 或INOUT 只對PROCEDURE是合法的。(FUNCTION參數總是被認為是IN參數) (4) RETURNS字句只能對FUNCTION做指定,對函數而言這是強制的。它用來指定函數的返回類型,而且函數體必須包含一個RETURN value語句。 (5) routine_body?包含合法的SQL過程語句。 (6) 如果程序或線程總是對同樣的輸入參數產生同樣的結果,則被認為它是“確定的”,否則就是“非確定”的。如果既沒有給定DETERMINISTIC也沒有給定NOT DETERMINISTIC,默認的就是NOT DETERMINISTIC。 (7) 一些特征提供子程序使用數據的內在信息。CONTAINS SQL表示子程序不包含讀或寫數據的語句。NO SQL表示子程序不包含SQL語句。READS SQL DATA表示子程序包含讀數據的語句,但不包含寫數據的語句。 MODIFIES SQL DATA表示子程序包含寫數據的語句。如果這些特征沒有明確給定,默認的是CONTAINS SQL (8) SQL SECURITY特征可以用來指定 子程序該用創建子程序者的許可來執行,還是使用調用者的許可來執行。默認值是DEFINER。 (9) COMMENT子句是一個MySQL的擴展,它可以被用來描述 存儲程序。這個信息被SHOW CREATE PROCEDURE和 SHOW CREATE FUNCTION語句來顯示。 2、修改 ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]
characteristic:
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
|?COMMENT?'string' 3、刪除 DROP?{PROCEDURE?|?FUNCTION}?[IF?EXISTS]?sp_name 4、展示 SHOW?CREATE?{PROCEDURE?|?FUNCTION}?sp_name SHOW?{PROCEDURE?|?FUNCTION}?STATUS?[LIKE?'pattern'] 5、調用 call db_name.sp_name(parameter)
轉載于:https://www.cnblogs.com/b-dong/p/6305514.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的MySQL存储过程和函数(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis 事务,持久化,日志,主从,V
- 下一篇: 【深度好文】多线程之WaitHandle