SQL Server 預存程序解析

來源:互聯網
上載者:User

預存程序功能的優點

  為什麼要使用預存程序?以下是預存程序技術的幾大主要優點:

  1.   先行編譯執行程式。SQL Server只需要對每一個預存程序進行一次編譯,然後就可以重複使用執行計畫。這個特點通過重複調用儲存程式極大地提高了程式的效能。
  2.   縮短用戶端/伺服器之間的資訊傳輸量。如果你的工作環境頻寬有限,那麼預存程序技術肯定能夠滿足你,因為它能夠把需要傳輸的長的SQL查詢縮短成一行。
  3.   有效重複使用代碼和編程。預存程序可以為多個使用者所使用,也可以用於多個客戶程式。這樣可以減少程式開發週期的時間。
  4.   增強安全性控制。可以允許使用者單獨執行預存程序,而不給於其訪問表格的許可權。

  結構

  預存程序的結構跟其他程式設計語言非常相似。預存程序接受輸入參數形式的資料。這些輸入參數在執行系列語句的時候被運用並產生結果。結果在通過使用記錄集、輸出參數和傳回碼返回。聽起來似乎很複雜,實際上儲存程式非常簡單。

  執行個體

  假設我們有如下名為Inventory的表格,表格裡的資料需要即時更新,倉庫經理會不停地檢查倉庫裡的貨存數量和可供發貨的貨存數量。以前,每一個地區的倉庫經理都會進行如下查詢:

以下是引用片段:
  SELECT Product, Quantity
  FROM Inventory
  WHERE Warehouse = 'FL'

  這樣的查詢使SQL Server效能效率非常低下。每次倉庫經理執行該查詢,資料庫伺服器都不得不重新對其進行編譯然後重新開始執行。這樣的查詢還要求倉庫經理具備SQL方面的知識,並且擁有訪問表格式資料的許可權。

  我們可以通過使用預存程序來簡化這個查詢過程。首先建立一個名為 sp_GetInventory的過程,能夠擷取一個已有倉庫的貨存水平。下面是建立該程式的SQL代碼:

以下是引用片段:
  CREATE PROCEDURE sp_GetInventory
  @location varchar(10)
  AS
  SELECT Product, Quantity
  FROM Inventory
  WHERE Warehouse = @location

  A地區的倉庫經理可以執行下面的命令來獲得貨存水平:

以下是引用片段:
  EXECUTE sp_GetInventory 'FL'

  B地區的倉庫經理可以使用同樣的預存程序來訪問該地區的貨存資訊。

以下是引用片段:
  EXECUTE sp_GetInventory 'NY'

  當然,這隻是一個很簡單的例子,但是可以看出來預存程序的好處。倉庫經理不一定要懂得SQL或者預存程序內在的工作原理。從效能的角度看的話,預存程序無疑大大地提高了工作的效率。SQL Server只需建立執行計畫一次,然後就可以重複使用預存程序,只需要在每次執行時輸入適當的參數就可以了。

  貨存表格:
ID Product Warehouse Quantity
142 Green beans NY 100
214 Peas FL 200
825 Corn NY 140
512 Lima beans NY 180
491 Tomatoes FL 80
379 Watermelon FL 85
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.