MySQL存儲過程詳解
點擊關(guān)注上方“SQL數(shù)據(jù)庫開發(fā)”,
設(shè)為“置頂或星標(biāo)”,第一時間送達(dá)干貨

示例:
CREATE?PROCEDURE?sp_customers(IN?cusid INT)
BEGIN?
??SELECT?* FROM?customers WHERE?`客戶ID`=cusid;
END;CALL??sp_name([參數(shù)])
CALL?sp_customers(1);解釋:

過程體即我們在調(diào)用時必須執(zhí)行的SQL語句,上面的SELECT查詢即為一個簡單的過程體。
過程體包含DML、DDL語句,if-then-else和while-do語句、聲明變量的declare語句等
過程體的格式上面也已經(jīng)演示過,以BEGIN開始,以END結(jié)尾(可以嵌套)。
BEGIN
??BEGIN
????BEGIN
??????-- SQL代碼;
????END
??END
END[label_name:]?BEGIN ? ? [statement_list]? END?[label_name]
label1: BEGIN
??label2: BEGIN
????label3: BEGIN
??????--SQL代碼;
????END?label3 ;
??END?label2;
END?label1IN輸入?yún)?shù):表示調(diào)用者向過程傳入值(傳入值可以是字面量或變量)
OUT輸出參數(shù):表示過程向調(diào)用者傳出值(可以返回多個值)(傳出值只能是變量)
INOUT輸入輸出參數(shù):既表示調(diào)用者向過程傳入值,又表示過程向調(diào)用者傳出值(值只能是變量)
CREATE?PROCEDURE?sp_customers_out(OUT?cusname VARCHAR(20))
BEGIN
??SELECT?cusname;
??SELECT?`姓名`?INTO?cusname FROM?customers WHERE?`客戶ID`=1;
??SELECT?cusname;
ENDCALL?sp_customers_out(@cusname);

CREATE?PROCEDURE?sp_customers_inout(INOUT cusname VARCHAR(20))
BEGIN
??SELECT?cusname;
??SELECT?`姓名`?INTO?cusname FROM?customers WHERE?`客戶ID`=2;
??SELECT?cusname;
ENDSET?@cusname='張三';
CALL?sp_customers_inout(@cusname);

需要輸入值時使用IN參數(shù);
需要返回值時使用OUT參數(shù);
INOUT參數(shù)盡量少用。
——End——
后臺回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨 后臺回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。 推薦閱讀 這是一個能學(xué)到技術(shù)的公眾號,歡迎關(guān)注
點擊「閱讀原文」了解SQL訓(xùn)練營
評論
圖片
表情
