SQL Server存儲過程

存儲過程提供高效率和安全性優勢

Microsoft SQL Server提供了存儲過程機制,通過將Transact-SQL語句分組為可管理的塊來簡化數據庫開發過程。 大多數SQL Server開發人員都非常欣賞存儲過程,他們發現他們獲得的高效和安全優勢非常值得及時進行前期投資。

使用存儲過程的好處

為什麼開發人員應該使用存儲過程?

以下是這項技術的主要優點:

存儲過程與用戶定義的函數類似,但存在細微差別。

結構體

存儲過程與其他編程語言中的構造類似。

他們接受在執行時指定的輸入參數形式的數據。 這些輸入參數(如果實現的話)被用於執行一系列產生一些結果的語句。 此結果通過使用記錄集,輸出參數和返回碼返回到調用環境。

這可能聽起來很滿意,但你會發現存儲過程其實很簡單。

我們來看看與本頁底部顯示的名為inventory的表相關的實際示例。 這些信息會實時更新,倉庫管理人員會不斷檢查存儲在倉庫中的產品的水平,並可供發貨。 過去,每位經理都會運行類似以下的查詢:

選擇產品,數量
從庫存中
WHERE倉庫='FL'

這導致了SQL Server的低效率性能。 每次倉庫管理者執行查詢時,數據庫服務器都被迫重新編譯查詢並從頭開始執行。 它還要求倉庫經理了解SQL和適當的權限來訪問表信息。

相反,該過程可以通過使用存儲過程來簡化。 以下是稱為sp_GetInventory的過程的代碼,用於檢索給定倉庫的庫存水平。

CREATE PROCEDURE sp_GetInventory
@location varchar(10)

選擇產品,數量
從庫存中
WHERE Warehouse = @location

佛羅里達倉庫經理可以通過發出以下命令來訪問庫存水平:

EXECUTE sp_GetInventory'FL'

紐約倉庫經理可以使用相同的存儲過程來訪問該區域的庫存:

EXECUTE sp_GetInventory'NY'

當然,這是一個簡單的例子,但是抽象的好處可以在這裡看到。 倉庫經理不需要了解SQL或程序的內部工作。 從性能角度來看,存儲過程可以創造奇蹟。 SQL Server一次創建一個執行計劃,然後通過在執行時插入適當的參數來重新使用它。

既然您已經了解了存儲過程的好處,那麼您就可以使用它們了。

嘗試一些示例並衡量所實現的性能增強 - 您會感到驚訝!

庫存表

ID 產品 倉庫 數量
142 綠豆 紐約 100
214 豌豆 FL 200
825 玉米 紐約 140
512 利馬豆 紐約 180
491 番茄 FL 80
379 西瓜 FL 85