久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

解析SQL Server 的存儲過程

瀏覽:3日期:2023-11-03 17:22:05

微軟的SQL Server的存儲過程機制能夠通過對Transact-SQL語句進行組合而大大地簡化了數(shù)據(jù)庫開發(fā)過程。

存儲過程功能的優(yōu)點

為什么要使用存儲過程?以下是存儲過程技術的幾大主要優(yōu)點:

預編譯執(zhí)行程序。SQL Server只需要對每一個存儲過程進行一次編譯,然后就可以重復使用執(zhí)行計劃。這個特點通過重復調(diào)用存儲程序極大地提高了程序的性能。 縮短客戶端/服務器之間的信息傳輸量。如果你的工作環(huán)境帶寬有限,那么存儲過程技術肯定能夠滿足你,因為它能夠把需要傳輸?shù)拈L的SQL查詢縮短成一行。 有效重復使用代碼和編程。存儲過程可以為多個用戶所使用,也可以用于多個客戶程序。這樣可以減少程序開發(fā)周期的時間。 增強安全性控制。可以允許用戶單獨執(zhí)行存儲過程,而不給于其訪問表格的權限。結(jié)構

存儲過程的結(jié)構跟其他編程語言非常相似。存儲過程接受輸入?yún)?shù)形式的數(shù)據(jù)。這些輸入?yún)?shù)在執(zhí)行系列語句的時候被運用并生成結(jié)果。結(jié)果在通過使用記錄集、輸出參數(shù)和返回代碼返回。聽起來似乎很復雜,實際上存儲程序非常簡單。

實例

假設我們有如下名為Inventory的表格,表格里的數(shù)據(jù)需要實時更新,倉庫經(jīng)理會不停地檢查倉庫里的貨存數(shù)量和可供發(fā)貨的貨存數(shù)量。以前,每一個地區(qū)的倉庫經(jīng)理都會進行如下查詢:

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

這樣的查詢使SQL Server性能效率非常低下。每次倉庫經(jīng)理執(zhí)行該查詢,數(shù)據(jù)庫服務器都不得不重新對其進行編譯然后重新開始執(zhí)行。這樣的查詢還要求倉庫經(jīng)理具備SQL方面的知識,并且擁有訪問表格數(shù)據(jù)的權限。

我們可以通過使用存儲過程來簡化這個查詢過程。首先創(chuàng)建一個名為 sp_GetInventory的過程,能夠獲取一個已有倉庫的貨存水平。下面是創(chuàng)建該程序的SQL代碼:

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

A地區(qū)的倉庫經(jīng)理可以執(zhí)行下面的命令來獲得貨存水平:

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

B地區(qū)的倉庫經(jīng)理可以使用同樣的存儲過程來訪問該地區(qū)的貨存信息。

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

當然,這只是一個很簡單的例子,但是可以看出來存儲過程的好處。倉庫經(jīng)理不一定要懂得SQL或者存儲過程內(nèi)在的工作原理。從性能的角度看的話,存儲過程無疑大大地提高了工作的效率。SQL Server只需創(chuàng)建執(zhí)行計劃一次,然后就可以重復使用存儲過程,只需要在每次執(zhí)行時輸入適當?shù)膮?shù)就可以了。

貨存表格:;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

主站蜘蛛池模板: 古浪县| 阿城市| 靖远县| 酉阳| 宜春市| 合江县| 察雅县| 连城县| 博爱县| 罗山县| 勃利县| 洛浦县| 承德县| 岑溪市| 分宜县| 建湖县| 新安县| 许昌市| 临邑县| 繁峙县| 曲阜市| 咸宁市| 城固县| 凤凰县| 永清县| 高密市| 新龙县| 巨野县| 乐清市| 南郑县| 卢湾区| 古浪县| 包头市| 会理县| 尉氏县| 普兰店市| 凤冈县| 古蔺县| 湘西| 杨浦区| 怀来县|