国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL數據庫之存儲過程揭秘

存儲 存儲軟件
迄今為止,使用的大多數 SQL語句都是針對一個或多個表的單條語句。并非所有操作都這么簡單,經常會有一個完整的操作需要多條語句才能完成。例如,考慮以下的情形。

 [[268532]]

什么是存儲過程

迄今為止,使用的大多數 SQL語句都是針對一個或多個表的單條語句。并非所有操作都這么簡單,經常會有一個完整的操作需要多條語句才能完成。例如,考慮以下的情形。

1、 為了處理訂單,需要核對以保證庫存中有相應的物品。

2、 如果庫存有物品,這些物品需要預定以便不將它們再賣給別的人,并且要減少可用的物品數量以反映正確的庫存量。

3、庫存中沒有的物品需要訂購,這需要與供應商進行某種交互。

4、 關于哪些物品入庫(并且可以立即發貨)和哪些物品退訂,需要通知相應的客戶。

這顯然不是一個完整的例子,它甚至超出了本書中所用樣例表的范圍,但足以幫助表達我們的意思了。執行這個處理需要針對許多表的多條MySQL語句。此外,需要執行的具體語句及其次序也不是固定的,它們可能會(和將)根據哪些物品在庫存中哪些不在而變化。

那么,怎樣編寫此代碼?一種是我們可以單獨編寫每條語句,并根據結果有條件地執行另外的語句。在每次需要這個處理時(以及每個需要它的應用中)都必須做這些工作。而另一種可以創建存儲過程。

其實簡單來說:存儲過程,就是為以后的使用而保存的一條或多條 MySQL語句的集合。可將其視為批文件,雖然它們的作用不僅限于批處理。

為什么要使用存儲過程

既然我們知道了什么是存儲過程,那么為什么要使用它們呢?有許多理由,下面列出一些主要的理由。

1、通過把處理封裝在容易使用的單元中,簡化復雜的操作(正如前面例子所述)。

2、 由于不要求反復建立一系列處理步驟,這保證了數據的完整性。如果所有開發人員和應用程序都使用同一(試驗和測試)存儲過程,則所使用的代碼都是相同的。這一點的延伸就是防止錯誤。需要執行的步驟越多,出錯的可能性就越大。防止錯誤保證了數據的一致性。

3、簡化對變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改存儲過程的代碼。使用它的人員甚至不需要知道這些變化。這一點的延伸就是安全性。通過存儲過程限制對基礎數據的訪問減少了數據訛誤(無意識的或別的原因所導致的數據訛誤)的機會。

4、提高性能。因為使用存儲過程比使用單獨的 SQL語句要快。

5、存在一些只能用在單個請求中的 MySQL元素和特性,存儲過程可以使用它們來編寫功能更強更靈活的代碼(在下一章的例子中可以看到。)

換句話說,使用存儲過程有 3個主要的好處,即簡單、安全、高性能。顯然,它們都很重要。不過,在將 SQL代碼轉換為存儲過程前,也必須知道它的一些缺陷。

1、一般來說,存儲過程的編寫比基本 SQL語句復雜,編寫存儲過程需要更高的技能,更豐富的經驗。

2、你可能沒有創建存儲過程的安全訪問權限。許多數據庫管理員限制存儲過程的創建權限,允許用戶使用存儲過程,但不允許他們創建存儲過程。

盡管有這些缺陷,存儲過程還是非常有用的,并且應該盡可能地使用。

不能編寫存儲過程?你依然可以使用:MySQL將編寫存儲過程的安全和訪問與執行存儲過程的安全和訪問區分開來。這是好事情。即使你不能(或不想)編寫自己的存儲過程,也仍然可以在適當的時候執行別的存儲過程。

如何去使用存儲過程

使用存儲過程需要知道如何執行(運行)它們。存儲過程的執行遠比其定義更經常遇到,因此,我們將從執行存儲過程開始介紹。然后再介紹創建和使用存儲過程。

執行存儲過程

MySQL稱存儲過程的執行為調用,因此 MySQL執行存儲過程的語句為CALL。 CALL接受存儲過程的名字以及需要傳遞給它的任意參數。請看以下例子:

  1. call productpricing ( @ pricelow, 
  2.  @ pricehigh, 
  3.  @ priceaverage 
  4.  ); 

其中執行productpricing 的存儲過程,他計算并返回產品的最低價格,最高價格,均價。存儲過程可以顯示結果,也可以不顯示結果,接下來會提到。

創建存儲過程

正如所述,編寫存儲過程并不是微不足道的事情。為讓你了解這個過程,請看一個例子——一個返回產品平均價格的存儲過程。以下是其代碼:

  1. CREATE PROCEDURE productpricing() 
  2. BEGIN 
  3.  SELECT AVG(prod_price) AS priceaverage 
  4.  FROM products; 
  5. END

我們稍后介紹第一條和最后一條語句。此存儲過程名為productpricing,用CREATE PROCEDURE productpricing() 語句定義。如果存儲過程接受參數,它們將在 ()中列舉出來。此存儲過程沒有參數,但后跟的 ()仍然需要。BEGIN和 END語句用來限定存儲過程體,過程體本身僅是一個簡單的 SELECT語句(使用第12章介紹的 Avg()函數)。

在MySQL處理這段代碼時,它創建一個新的存儲過程 productpricing。沒有返回數據,因為這段代碼并未調用存儲過程,這里只是為以后使用而創建它。

這里有一個需要注意的就是:mysql命令行客戶機的分隔符

如果你使用的是 mysql命令行實用程序,應該仔細閱讀此說明。

默認的 MySQL語句分隔符為;(正如你已經在迄今為止所使用的MySQL語句中所看到的那樣)。 mysql命令行實用程序也使用;作為語句分隔符。如果命令行實用程序要解釋存儲過程自身內的 ;字符,則它們最終不會成為存儲過程的成分,這會使存儲過程中的 SQL出現句法錯誤。解決辦法是臨時更改命令行實用程序的語句分隔符,如下所示:

  1. DELIMITER // 
  2. CREATE PROCEDURE productpricing() 
  3. BEGIN 
  4.  SELECT AVG(prod_price) AS priceaverage 
  5.  FROM products; 
  6. END // 
  7. DELIMITER ; 

其中, DELIMITER //告訴命令行實用程序使用 //作為新的語句結束分隔符,可以看到標志存儲過程結束的 END定義為END//而不是END; 。這樣,存儲過程體內的 ;仍然保持不動,并且正確地傳遞給數據庫引擎。最后,為恢復為原來的語句分隔符,可使用 DELIMITER ;。除符號外,任何字符都可以用作語句分隔符。如果你使用的是 mysql命令行實用程序,在閱讀本文時請記住這里的內容。

那么,如何使用這個存儲過程?如下所示:

  1. CALL productpricing(); 

結果是:

  1. +--------------+ 
  2. | priceaverage | 
  3. +--------------+ 
  4. | 16.133571 | 
  5. +--------------+ 

CALL productpricing();執行剛創建的存儲過程并顯示返回的結果。因為存儲過程實際上是一種函數,所以存儲過程名后需要有()符號(即使不傳遞參數也需要)。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-08-27 15:00:09

MySQL數據庫存儲

2018-11-05 15:14:42

MySQL編程語言技術

2011-07-04 11:38:06

MySQL

2010-10-14 13:18:55

MySQL存儲過程

2011-07-19 15:18:46

存儲過程sql語句

2018-07-13 09:20:30

SQLite數據庫存儲

2012-06-11 18:07:03

2021-05-19 08:21:09

MySQL數據庫GTID

2018-05-02 08:48:58

Raid存儲MySQL

2011-06-03 10:50:27

Java

2011-07-13 16:19:54

存儲過程SQL Server數

2011-05-30 14:30:08

函數存儲過程

2009-09-11 15:12:26

LINQ執行存儲過程

2018-11-12 15:15:32

MySQL數據庫命令

2011-07-28 14:31:47

SQL Server數存儲過程

2011-08-03 13:28:08

Oracle數據庫數據庫控制文件

2011-03-10 11:12:59

數據庫

2025-06-13 09:33:45

2011-07-19 17:06:33

Oracle數據庫自動增長列

2011-08-29 10:55:03

SQL Server分頁存儲過程優化效率分
點贊
收藏

51CTO技術棧公眾號

中文字幕综合一区| 麻豆传媒在线观看| 精品视频在线免费| 人人精品久久| 国产精品一区二区av| 久久综合九色综合97婷婷| 99青草视频在线播放视| 欧美成人免费在线视频| 亚洲一区二区毛片| av高清在线| 日韩精品免费一线在线观看| 欧美国产一级| 免费日韩视频在线观看| 91精品国产综合久久蜜臀 | 国产农村妇女毛片精品久久麻豆| √天堂资源地址在线官网| 久久免费少妇高潮久久精品99| 三级在线观看一区二区| 精东影业在线观看| 久久综合久久八八| 免费看欧美美女黄的网站| 性综艺节目av在线播放| 久久夜色精品国产亚洲aⅴ| 亚洲欧美日韩国产一区| 成年在线播放小视频| 日韩天堂在线视频| 蜜乳av一区二区三区| 国产专区在线播放| 国产成人精品视频在线| 91网站最新网址| 8x8ⅹ拨牐拨牐拨牐在线观看| 91久久国产综合久久蜜月精品| 中文字幕制服丝袜一区二区三区| 亚洲精品粉嫩美女一区| 日韩中文字幕一区二区| 日韩欧美在线看| 国内自拍欧美| 精品少妇人妻av免费久久洗澡| 亚洲国产成人在线播放| 亚洲视频1区| 大乳在线免费观看| 成人淫片在线看| 偷拍与自拍一区| 成人羞羞网站入口免费| 午夜黄色一级片| 国产ts人妖一区二区三区| 中文一区一区三区高中清不卡| 粉嫩一区二区三区在线观看| 亚洲 欧美 日韩 国产综合 在线| 一个人看的www久久| 国产乱码字幕精品高清av| 国产探花视频在线观看| 亚洲国产午夜伦理片大全在线观看网站 | 欧美日韩在线一二三| 欧美午夜片在线观看| 亚洲一级淫片| 欧美亚洲日本| 97伦理在线四区| 欧美三日本三级三级在线播放| 欧美日韩1区2区3区| a视频网址在线观看| 精品国产乱码一区二区三区四区| 色哟哟在线观看一区二区三区| 自拍偷拍欧美专区| 久热av在线| 国产九色91| 欧美一级在线免费| 精品一区二区三区在线播放视频 | 成人久久久久久久| 精品久久久久久久中文字幕| 91影院成人| 国产福利在线视频| 久久国产精品免费一区| 精品久久一区二区| 成人性视频免费网站| 国产乱码精品一区二区三区亚洲人| 簧片在线免费看| 国产精品视频资源| 欧美日韩精品综合在线| 国产中文一区二区三区| 青草伊人久久| baoyu777.永久免费视频| 国产精选久久久久久| 欧美日韩视频在线一区二区| 久久99最新地址| 精品视频一区二区三区在线观看| 久草.com| 欧美日韩一区二区三区在线观看免| 亚洲人在线观看| 亚洲精品国产视频| 亚洲伦伦在线| 国产精品无码久久久久| av首页在线| 精品国产免费一区二区三区| 亚洲老头老太hd| 国产精品久久福利| 亚洲裸体俱乐部裸体舞表演av| 九九色在线视频| 色噜噜狠狠永久免费| 国产精品一区在线播放| 中文字幕精品久久| 天天影视色香欲综合网老头| 免播放器亚洲一区| www.成人网| 女女色综合影院| 97在线播放视频| 亚洲伊人久久综合| 一本色道久久综合狠狠躁篇的优点| 一区二区三区欧美激情| 日av在线不卡| 一本色道久久综合亚洲精品酒店| www久久日com| 羞羞在线视频| 亚洲乱码一区二区三区| 97av在线视频| 欧美一二区视频| 国产精品国产三级国产aⅴ入口| 国产欧美另类| 卡通动漫精品一区二区三区| 国产视频在线播放| xxx亚洲日本| 亚洲欧美日产图| 国产成人小视频在线观看| 日韩精品中文字幕久久臀| 岛国精品视频在线播放| 91婷婷韩国欧美一区二区| 一本色道久久综合| 美女网站色精品尤物极品姐弟| 丝袜在线视频| 中国动漫在线观看完整版免费| 老子影院午夜伦不卡大全| 成人国产1314www色视频| 欧美国产精品va在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲黄色性网站| 成人avav影音| 欧美亚洲一区| 日韩精品午夜| 国产精品va视频| 91色在线看| 成人av电影观看| 羞羞的视频网站| 青青草视频在线视频| 国产亚洲精品自在久久| 欧美做受高潮电影o| 最新91在线视频| 337p日本欧洲亚洲大胆精品| 黑人巨大精品欧美一区二区三区| 久久精子c满五个校花| 国内精品不卡在线| 在线综合视频| 66久久国产| 制服丝袜日韩| 久久久久久久久久久久电影| 小草在线视频免费播放| 91亚洲欧美| 天堂av网在线| 日本电影免费看| 鲁一鲁一鲁一鲁一av| 男人插女人视频在线观看| 亚洲成人一区二区三区| 91精品入口蜜桃| 国产精品美女久久| 欧美与欧洲交xxxx免费观看 | 欧美aⅴ99久久黑人专区| 操欧美女人视频| 影视一区二区三区| 精品一性一色一乱农村| 中文字幕在线视频区| 男人天堂网在线观看| 色琪琪丁香婷婷综合久久| 在线观看欧美激情| 青青影院一区二区三区四区| 国产精品久久久久久久午夜片 | 欧美精品久久久久久久久老牛影院| 一区二区三区日韩欧美精品| 久久久影院官网| 懂色av中文字幕一区二区三区| 日本 国产 欧美色综合| 午夜亚洲精品| 99在线精品视频在线观看| 亚洲影视一区| 欧美丰满老妇| 久久国产成人午夜av影院宅| 伊人久久综合影院| 中文字幕亚洲影视| 成人三级av在线| 亚洲精品66| 日韩不卡在线视频| 天堂va在线高清一区| 高清久久精品| 亚洲一区电影| 红杏成人性视频免费看| 精品精品国产三级a∨在线| 97一区二区国产好的精华液| youjizzjizz亚洲| 五月综合久久| 日韩不卡一区| 极品尤物久久久av免费看| 亚洲电影av|