李美靜 廊坊師範學院資訊科技提高班十三期
在開發過程中,經常會遇到重複使用某一個功能的情況,為此,MySQL引入了儲存過程 儲存過程 就是一條或多條SQL語句的集合,當對資料庫進行一系列複雜操作時,儲存過程可以將這些複雜操縱,封裝成一個程式碼塊,以便重複使用,大大減少資料庫開發人員的工作量
建立儲存過程
使用CREATE PROCEDURE語句 CREATE PROCEDURE sp_name([proc_parameter]) [characteristics……]routine_body
引數說明
CREATE PROCEDURE,建立儲存過程的關鍵字 Sp_name,為儲存過程的名稱 Proc_parameter,為指定儲存過程的引數列表,引數列表的形式,如下 [IN|OUT|INOUT]param_name type
引數列表說明
IN,表示輸入引數 OUT,表示輸出引數 INOUT,表示既可以輸入,也可以輸出 Param_name,表示引數名稱 type,表示引數的型別,可以是MySQL資料庫中的任意型別
在建立儲存過程的語法格式中,characteristics用於指定儲存過程的特性,取值如下
LANGUAGE SQL
說明,routine_doby部分,是由SQL語句組成的,當前系統支援的語言為SQL,SQL是LANGUAGE的唯一值
[NOT] DETERMINISTIC
指明儲存過程執行的結果是否正確,DETERMINISTIC表示結果是正確的,每次執行儲存過程時,相同的輸入可能得到不同的輸出,如果沒有指定任意一個值,預設為NOT DETERMINISTIC
{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
指明子程式使用SQL語句的限制 CONTAINS SQL,表示子程式包含SQL語句,但是,不包含讀寫資料的語句 NO SQL,表示子程式不包含SQL語句 READS SQL DATA,說明子程式,包含讀寫資料的語句 MODIFIES SQL DATA,表示子程式包含寫資料的語句 預設情況下,系統會指定為CONTAINS SQL
SQL SECURITY{DEFINER | INVOKER}
指明,誰有許可權來執行 DEFINER,表示只有定義者才能執行 INVOKER,表示擁有許可權的呼叫者可以執行 預設情況下,系統指定為DEFINER
COMMENT’string’
註釋資訊,用來表示儲存過程 Routine_body,是SQL程式碼的內容,可以用BEGIN……END來表示SQL程式碼的開始和結束