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

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

過(guò)程體即我們?cè)谡{(diào)用時(shí)必須執(zhí)行的SQL語(yǔ)句,上面的SELECT查詢即為一個(gè)簡(jiǎn)單的過(guò)程體。
過(guò)程體包含DML、DDL語(yǔ)句,if-then-else和while-do語(yǔ)句、聲明變量的declare語(yǔ)句等
過(guò)程體的格式上面也已經(jīng)演示過(guò),以BEGIN開(kāi)始,以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)用者向過(guò)程傳入值(傳入值可以是字面量或變量)
OUT輸出參數(shù):表示過(guò)程向調(diào)用者傳出值(可以返回多個(gè)值)(傳出值只能是變量)
INOUT輸入輸出參數(shù):既表示調(diào)用者向過(guò)程傳入值,又表示過(guò)程向調(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);

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