mysql 存儲過程

一.什么事存儲過程?
存儲例程是存儲在數(shù)據(jù)庫服務器中的一組sql語句,通過在查詢中調(diào)用一個指定的名稱來執(zhí)行這些sql語句命令

二.為什么要用存儲過程?
1.程序分兩種,一種是基于web论巍,一種是基于桌面诗越,他們都和數(shù)據(jù)庫進行交互來完成數(shù)據(jù)的存取工作。假設現(xiàn)在有一種應用程序包含了這兩種谤草,
現(xiàn)在要修改其中的一個查詢sql語句,那么我們可能要同時修改他們中對應的查詢sql語句,當我們的應用程序很龐大很復雜的時候問題就出現(xiàn)這咙鞍,
不易維護箫柳!另外把sql查詢語句放在我們的web程序或桌面中很容易遭到sql注入的破壞镀脂。而存儲例程正好可以幫我們解決這些問題。
存儲過程(stored procedure)酒觅、存儲例程(store routine)撮执、存儲函數(shù)區(qū)別
Mysql存儲例程實際包含了存儲過程和存儲函數(shù),它們被統(tǒng)稱為存儲例程舷丹。
其中存儲過程主要完成在獲取記錄或插入記錄或更新記錄或刪除記錄抒钱,即完成select insert delete update等的工作。
而存儲函數(shù)只完成查詢的工作颜凯,可接受輸入?yún)?shù)并返回一個結(jié)果谋币。

2.存儲過程能不用盡量不用,原則是:業(yè)務邏輯不要封裝在數(shù)據(jù)庫里面(數(shù)據(jù)庫去進行邏輯判斷業(yè)務)。
把業(yè)務邏輯要交給應用程序處理装获。這樣可以減少數(shù)據(jù)庫資源消耗瑞信。人員也難以招聘,因為既懂存儲過程穴豫,
又懂業(yè)務的人少。使用困難逼友。大量業(yè)務邏輯封裝在存儲過程中精肃,造成后面根本就不能動了。動a影響b帜乞。
以后業(yè)務邏輯很難剝離出來司抱。增加以后維護困難。

三,創(chuàng)建存儲函數(shù);
1.格式;
create procedure 存儲過程名(參數(shù))
存儲過程體
create function 存儲函數(shù)名(參數(shù))

    2.如;
        mysql> DELIMITER // 
        ysql> CREATE PROCEDURE proc1(OUT s int) 
        -> BEGIN
        -> SELECT COUNT(*) INTO s FROM user; 
        -> END
        -> // 
        mysql> DELIMITER ;
        
    3.注意;
    (1)這里需要注意的是DELIMITER//和DELIMITER;兩句黎烈,DELIMITER是分割符的意思习柠,因為MySQL默認以”;”為分隔 符,
        如果我們沒有聲明分割符照棋,那么編譯器會把存儲過程當成SQL語句進行處理资溃,則存儲過程的編譯過程會報錯,
        所以要事先用DELIMITER關鍵字申明當 前段分隔符烈炭,這樣MySQL才會將”;”當做存儲過程中的代碼溶锭,不會執(zhí)行這些代碼,
        用完了之后要把分隔符還原符隙。 
   (2)存儲過程根據(jù)需要可能會有輸入趴捅、輸出、輸入輸出參數(shù)霹疫,這里有一個輸出參數(shù)s拱绑,類型是int型,如果有多個參數(shù)用”,”分割開丽蝎。 
   (3)過程體的開始與結(jié)束使用BEGIN與END進行標識猎拨。 
        這樣,我們的一個MySQL存儲過程就完成了,是不是很容易呢?看不懂也沒關系迟几,接下來消请,我們詳細的講解。

四:參數(shù)
1.MySQL存儲過程的參數(shù)用在存儲過程的定義类腮,共有三種參數(shù)類型,IN,OUT,INOUT,形式如:
CREATEPROCEDURE 存儲過程名([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形…])
IN 輸入?yún)?shù):表示該參數(shù)的值必須在調(diào)用存儲過程時指定臊泰,在存儲過程中修改該參數(shù)的值不能被返回,為默認值
OUT 輸出參數(shù):該值可在存儲過程內(nèi)部被改變蚜枢,并可返回
INOUT 輸入輸出參數(shù):調(diào)用時指定缸逃,并且可被改變和返回

例如:
    .IN參數(shù)例子
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厂抽,隨后出現(xiàn)的幾起案子需频,更是在濱河造成了極大的恐慌,老刑警劉巖筷凤,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昭殉,死亡現(xiàn)場離奇詭異,居然都是意外死亡藐守,警方通過查閱死者的電腦和手機挪丢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卢厂,“玉大人乾蓬,你說我怎么就攤上這事∩骱悖” “怎么了任内?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長融柬。 經(jīng)常有香客問我死嗦,道長,這世上最難降的妖魔是什么丹鸿? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任越走,我火速辦了婚禮,結(jié)果婚禮上靠欢,老公的妹妹穿的比我還像新娘廊敌。我一直安慰自己,他們只是感情好门怪,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布骡澈。 她就那樣靜靜地躺著,像睡著了一般掷空。 火紅的嫁衣襯著肌膚如雪肋殴。 梳的紋絲不亂的頭發(fā)上囤锉,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音护锤,去河邊找鬼官地。 笑死,一個胖子當著我的面吹牛烙懦,可吹牛的內(nèi)容都是我干的驱入。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼氯析,長吁一口氣:“原來是場噩夢啊……” “哼亏较!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掩缓,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤雪情,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后你辣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巡通,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年舍哄,在試婚紗的時候發(fā)現(xiàn)自己被綠了扁达。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蠢熄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炉旷,到底是詐尸還是另有隱情签孔,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布窘行,位于F島的核電站饥追,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏罐盔。R本人自食惡果不足惜但绕,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惶看。 院中可真熱鬧捏顺,春花似錦、人聲如沸纬黎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽本今。三九已至拆座,卻和暖如春主巍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挪凑。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工孕索, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躏碳。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓搞旭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唐断。 傳聞我的和親對象是個殘疾皇子选脊,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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

  • SQL語句需要先編譯然后執(zhí)行,而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集脸甘,...
    MIN_ZJM閱讀 639評論 0 1
  • 原文:http://www.runoob.com/w3cnote/mysql-stored-procedure.h...
    忘了呼吸的那只貓閱讀 1,092評論 0 1
  • 任務需求:定時執(zhí)行的任務恳啥,調(diào)用存儲過程,進行數(shù)據(jù)遷移丹诀。 存儲過程相關總結(jié):(存儲過程的創(chuàng)建 不能伴隨有if exi...
    時待吾閱讀 3,071評論 0 4
  • 原文鏈接 MySQL存儲過程詳解 1.存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯钝的,然...
    亞斯咪妮閱讀 2,671評論 1 30
  • 轉(zhuǎn)載自-> 記錄MYSQL存儲過程中的關鍵語法:DELIMITER //聲明語句結(jié)束符,用于區(qū)分;CREATE P...
    風亡小窩閱讀 69,517評論 5 78