存儲過程(轉(zhuǎn))

出自:https://www.cnblogs.com/mark-chan/p/5384139.html

存儲過程(Stored Procedure)是在大型數(shù)據(jù)庫系統(tǒng)中呻拌,一組為了完成特定功能的SQL 語句集,它存儲在數(shù)據(jù)庫中,一次編譯后永久有效,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象购公。在數(shù)據(jù)量特別龐大的情況下利用存儲過程能達(dá)到倍速的效率提升。

// 具體例子

DELIMITER //
DROP PROCEDURE IF EXISTS demo;
CREATE PROCEDURE demo()
? ? BEGIN
? ? DECLARE n int DEFAULT 0;
? ? ? ? WHILE(n<20000) DO
? ? ? ? ? ? INSERT INTO t_user(name) VALUES(substring(MD5(RAND()),floor(RAND()*26)+1,6));
? ? ? ? set n = n + 1;
? ? ? ? END WHILE ;
? ?END //
DELIMITER ;
call demo();

DELIMITER;
DROP PROCEDURE IF EXISTS demo;
CREATE PROCEDURE demo()
? ? BEGIN
? ? DECLARE n int DEFAULT 0;
? ? ? ? WHILE(n<3) DO
? ? ? ? ? ? INSERT INTO liuyan(liuyan) VALUES(substring(MD5(RAND()),floor(RAND()*26)+1,6));
? ? ? ? set n = n + 1;
? ? ? ? END WHILE ;
? ?END;
DELIMITER ;
call demo();

上面是在查詢中執(zhí)行的語句,語句中新建了一個存儲過程demo陌知,并且說如果demo已經(jīng)存在就刪除調(diào)(如果已有demo,會刪除掖肋,并重新創(chuàng)建仆葡。如果沒有demo,就新建一個存儲過程demo)
下面是新建函數(shù)志笼,是一個存儲過程沿盅,可以保存為demo把篓,存儲過程的名稱為demo,存儲過程demo可以在ssm框架中調(diào)用腰涧。

BEGIN
? ? DECLARE n int DEFAULT 0;
? ? ? ? WHILE(n<200) DO
? ? ? ? ? ? INSERT INTO user(userId,userName) VALUES(500 + RAND() * (1000 - 500),substring(MD5(RAND()),floor(RAND()*26)+1,6));
? ? ? ? set n = n + 1;
? ? ? ? END WHILE ;
? END

ssm調(diào)用存儲過程時韧掩,存儲過程支持事務(wù)。

事務(wù)回滾

分隔符

MySQL默認(rèn)以";"為分隔符窖铡,如果沒有聲明分割符疗锐,則編譯器會把存儲過程當(dāng)成SQL語句進(jìn)行處理,因此編譯過程會報錯万伤,所以要事先用“DELIMITER //”聲明當(dāng)前段分隔符窒悔,讓編譯器把兩個"http://"之間的內(nèi)容當(dāng)做存儲過程的代碼,不會執(zhí)行這些代碼敌买;“DELIMITER ;”的意為把分隔符還原简珠。

參數(shù)

存儲過程根據(jù)需要可能會有輸入、輸出虹钮、輸入輸出參數(shù)聋庵,如果有多個參數(shù)用","分割開。MySQL存儲過程的參數(shù)用在存儲過程的定義芙粱,共有三種參數(shù)類型,IN,OUT,INOUT:

IN參數(shù)的值必須在調(diào)用存儲過程時指定祭玉,在存儲過程中修改該參數(shù)的值不能被返回,為默認(rèn)值

OUT:該值可在存儲過程內(nèi)部被改變春畔,并可返回

INOUT:調(diào)用時指定脱货,并且可被改變和返回

DELIMITER //
? CREATE PROCEDURE out_param(OUT p_out int)
? ? BEGIN
? ? ? SELECT p_out;
? ? ? SET p_out=2;
? ? ? SELECT p_out;
? ? END;
? ? //
DELIMITER ;
#調(diào)用
SET @p_out=1;
CALL out_param(@p_out);
SELECT @p_out;

IN a int // 調(diào)用時,a可以賦值律姨,但不能返回
OUT a int // 調(diào)用時振峻,a無法賦值,但可以返回
INOUT a int // 調(diào)用時择份,a可以賦值扣孟,也可以返回

一、if - then - else語句

二荣赶、while循環(huán)語句

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凤价,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拔创,更是在濱河造成了極大的恐慌利诺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剩燥,死亡現(xiàn)場離奇詭異立轧,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門氛改,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人比伏,你說我怎么就攤上這事胜卤。” “怎么了赁项?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵葛躏,是天一觀的道長。 經(jīng)常有香客問我悠菜,道長舰攒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任悔醋,我火速辦了婚禮摩窃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芬骄。我一直安慰自己猾愿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布账阻。 她就那樣靜靜地躺著蒂秘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淘太。 梳的紋絲不亂的頭發(fā)上姻僧,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音蒲牧,去河邊找鬼撇贺。 笑死,一個胖子當(dāng)著我的面吹牛造成,可吹牛的內(nèi)容都是我干的显熏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晒屎,長吁一口氣:“原來是場噩夢啊……” “哼喘蟆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鼓鲁,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤蕴轨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骇吭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橙弱,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棘脐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斜筐。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛀缝,靈堂內(nèi)的尸體忽然破棺而出顷链,到底是詐尸還是另有隱情,我是刑警寧澤屈梁,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布嗤练,位于F島的核電站,受9級特大地震影響在讶,放射性物質(zhì)發(fā)生泄漏煞抬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一构哺、第九天 我趴在偏房一處隱蔽的房頂上張望革答。 院中可真熱鬧,春花似錦遮婶、人聲如沸蝗碎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦骑。三九已至,卻和暖如春臀防,著一層夾襖步出監(jiān)牢的瞬間眠菇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工袱衷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捎废,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓致燥,卻偏偏與公主長得像登疗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嫌蚤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容