以下是引用片段: 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 |