標籤:
--// 儲存函數,自訂函數 ----------
-- 建立
CREATE FUNCTION function_name (參數列表) RETURNS 傳回值類型
函數體
- 函數名,應該合法的標識符,並且不應該與已有的關鍵字衝突。
- 一個函數應該屬於某個資料庫,可以使用db_name.funciton_name的形式執行當前函數所屬資料庫,否則為當前資料庫。
- 參數部分,由"參數名"和"參數類型"組成。多個參數用逗號隔開。
- 函數體由多條可用的mysql語句,流程式控制制,變數聲明等語句構成。
- 多條語句應該使用 begin...end 語句塊包含。
- 一定要有 return 傳回值語句。
-- 刪除
DROP FUNCTION [IF EXISTS] function_name;
-- 查看
SHOW FUNCTION STATUS LIKE ‘partten‘
SHOW CREATE FUNCTION function_name;
-- 修改
ALTER FUNCTION function_name 函數選項
--// 預存程序,自訂功能 ----------
-- 定義
儲存預存程序 是一段代碼(過程),儲存在資料庫中的sql組成。
一個預存程序通常用於完成一段商務邏輯,例如報名,交班費,訂單入庫等。
而一個函數通常專註與某個功能,視為其他程式服務的,需要在其他語句中調用函數才可以,而預存程序不能被其他調用,是自己執行 通過call執行。
-- 建立
CREATE PROCEDURE sp_name (參數列表)
過程體
參數列表:不同於函數的參數列表,需要指明參數類型
IN,表示輸入型
OUT,表示輸出型
INOUT,表示混合型
注意,沒有傳回值。
/* 預存程序 */ ------------------
預存程序是一段可執行性代碼的集合。相比函數,更偏向於商務邏輯。
調用:CALL 過程名
-- 注意
- 沒有傳回值。
- 只能單獨調用,不可夾雜在其他語句中
-- 參數
IN|OUT|INOUT 參數名 資料類型
IN 輸入:在調用過程中,將資料輸入到過程體內部的參數
OUT 輸出:在調用過程中,將過程體處理完的結果返回到用戶端
INOUT 輸入輸出:既可輸入,也可輸出
-- 文法
CREATE PROCEDURE 過程名 (參數列表)
BEGIN
過程體
END
(未完待續)
(Shocker 來源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)
一千行MySQL學習筆記(十一)