MySQL——使用存儲過程(十六)

MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng)荒叼,由瑞典MySQL AB 公司開發(fā)轿偎,目前屬于 Oracle 旗下產(chǎn)品。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)被廓,在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System坏晦,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。

MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng)嫁乘,關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中昆婿,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性蜓斧。

MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言仓蛆。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版挎春,由于其體積小看疙、速度快、總體擁有成本低搂蜓,尤其是開放源碼這一特點狼荞,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越帮碰,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境相味。

存儲過程

MySQL 5 添加了對存儲過程的支持。存儲過程簡單來說殉挽,就是為以后的使用而保存的一條或多條MySQL語句的集合丰涉。可將其視為批文件斯碌,雖然它們的作用不僅限于批處理一死。

使用存儲過程

一、執(zhí)行存儲過程

MySQL稱存儲過程的執(zhí)行為調(diào)用傻唾,因此MySQL執(zhí)行存儲過程的語句為CALL投慈。CALL接受存儲過程的名字以及需要傳遞給它的任意參數(shù)承耿,如下所示:

CALL productpricing(@pricelow,@pricehigh,@priceaverage);

其中,執(zhí)行名為 productpricing的存儲過程伪煤,它計算并返回產(chǎn)品的最低加袋、最高和平均價格。存儲過程可以顯示結(jié)果也可以不顯示結(jié)果抱既。

二职烧、創(chuàng)建存儲過程

例如:一個返回產(chǎn)品平均價格的存儲過程。

CREATE PROCEDURE productpricing()
BEGIN
    SELECT Avg(prod_price) AS priceaverage
    FROM products;
END ;

此存儲過程名為 productpricing防泵,用CREATE PROCEDURE productpricing()語句定義蚀之。如果存儲過程接受參數(shù),它們將在()中列舉出來捷泞。此存儲過程沒有參數(shù)足删,但后跟的()仍然需要。BEGIN和END語句用來限制存儲過程體肚邢,過程體本身是一個簡單的SELECT語句壹堰。在MySQL處理這段代碼時,它創(chuàng)建了一個新的存儲過程 productpricing骡湖。沒有返回數(shù)據(jù),因為這段代碼并未調(diào)用存儲過程峻厚,這里只是為了今后使用而創(chuàng)建它响蕴。存儲過程的使用如下:

CALL  productpricing();

CALL productpricing();執(zhí)行剛創(chuàng)建的存儲過程并顯示返回的結(jié)果。因為存儲過程實際上是一種函數(shù)惠桃,所以存儲過程名后需要有()符號(即使不傳遞參數(shù)也需要)浦夷。

三、刪除存儲過程

存儲過程在創(chuàng)建之后辜王,被保存在服務(wù)器上以供使用劈狐,直至被刪除。刪除命令從服務(wù)器中刪除存儲過程呐馆。

DROP PROCEDURE productpricing肥缔;

四、使用參數(shù)

productpricing只是一個簡單的存儲過程汹来,它簡單的顯示SELECT語句的結(jié)果续膳。一般,存儲過程并不顯示結(jié)果收班,而是把結(jié)果返回給你指定的變量坟岔。

變量:內(nèi)存中一個特定的位置,用來臨時存儲數(shù)據(jù)摔桦。

以下是productpricing的修改版本:

CREATE PROCEDURE productpricing(
OUT p1 DECIMAL(8,2),
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2),
)
BEGIN
    SELECT Min(prod_price) INTO p1 FROM products;
    SELECT Max(prod_price) INTO ph FROM products;
    SELECT Avg(prod_price) INTO pa FROM products;
END ;

此存儲過程接受3個參數(shù):p1存儲產(chǎn)品最低價社付,ph存儲產(chǎn)品最高價,pa 存儲產(chǎn)品平均價格。每個參數(shù)必須具有指定的類型鸥咖,這里使用十進(jìn)制值纪隙。關(guān)鍵字OUT指出相應(yīng)的參數(shù)用來從存儲過程傳出一個值(返回給調(diào)用者)。為了用此修改過的存儲過程扛或,必須指定3個變量名绵咱,如下所示:

CALL productpricing(@pricelow,@pricehigh,@priceaverage);

由于此存儲過程要求3個參數(shù),因此必須正好傳遞3個參數(shù)熙兔,不多也不少悲伶。所以,這條CALL語句給出3個參數(shù)住涉。它們是存儲過程將保存結(jié)果的3個變量的名字麸锉。
為了獲取3個值,可以使用以下語句:

SELECT @pricelow,@pricehigh,@priceaverage;

五舆声、檢查存儲過程

為顯示用來創(chuàng)建一個存儲過程的CREATE語句花沉,使用SHOW CREATE PROCEDURE語句:

SHOW CREATE PROCEDURE ordertotal;

為了獲得包括何時、由誰創(chuàng)建等詳細(xì)信息的存儲過程列表媳握,使用SHOW PROCEDURE STATUS碱屁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蛾找,隨后出現(xiàn)的幾起案子娩脾,更是在濱河造成了極大的恐慌,老刑警劉巖打毛,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柿赊,死亡現(xiàn)場離奇詭異,居然都是意外死亡幻枉,警方通過查閱死者的電腦和手機(jī)碰声,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熬甫,“玉大人胰挑,你說我怎么就攤上這事÷拚洌” “怎么了洽腺?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長覆旱。 經(jīng)常有香客問我蘸朋,道長,這世上最難降的妖魔是什么扣唱? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任藕坯,我火速辦了婚禮团南,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炼彪。我一直安慰自己吐根,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布辐马。 她就那樣靜靜地躺著拷橘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喜爷。 梳的紋絲不亂的頭發(fā)上冗疮,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音檩帐,去河邊找鬼术幔。 笑死,一個胖子當(dāng)著我的面吹牛湃密,可吹牛的內(nèi)容都是我干的诅挑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼泛源,長吁一口氣:“原來是場噩夢啊……” “哼拔妥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俩由,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤毒嫡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幻梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡努释,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年碘梢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伐蒂。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡煞躬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逸邦,到底是詐尸還是另有隱情恩沛,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布缕减,位于F島的核電站雷客,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桥狡。R本人自食惡果不足惜搅裙,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一皱卓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧部逮,春花似錦娜汁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至颅和,卻和暖如春傅事,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背融虽。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工享完, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人有额。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓般又,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巍佑。 傳聞我的和親對象是個殘疾皇子茴迁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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