解析SQL Server 的儲存過程

2021-06-16 01:17:51 字數 1679 閱讀 9778

微軟的sql server的儲存過程機制能夠通過對transact-sql語句進行組合而大大地簡化了資料庫開發過程。

儲存過程功能的優點

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

預編譯執行程式。sql server只需要對每乙個儲存過程進行一次編譯,然後就可以重複使用執行計畫。這個特點通過重複呼叫儲存程式極大地提高了程式的效能。

縮短客戶端/伺服器之間的資訊傳輸量。如果你的工作環境頻寬有限,那麼儲存過程技術肯定能夠滿足你,因為它能夠把需要傳輸的長的sql查詢縮短成一行。

有效重複使用**和程式設計。儲存過程可以為多個使用者所使用,也可以用於多個客戶程式。這樣可以減少程式開發週期的時間。

增強安全性控制。可以允許使用者單獨執行儲存過程,而不給於其訪問**的許可權。

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

例項 假設我們有如下名為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

SQL SERVER 匯入EXCEL的儲存過程

1.先在查詢分析器裡執行 exec sp configure show advanced options 1 reconfigure exec sp configure ad hoc distributed queries 1 reconfigure 2.儲存過程 alter procedure d...

SQL SERVER 匯入EXCEL的儲存過程

1.先在查詢分析器裡執行 exec sp configure show advanced options 1 reconfigure exec sp configure ad hoc distributed queries 1 reconfigure 2.儲存過程 alter procedure d...

SQL SERVER 匯入EXCEL的儲存過程

1.先在查詢分析器裡執行 exec sp configure show advanced options 1 reconfigure exec sp configure ad hoc distributed queries 1 reconfigure 2.儲存過程 alter procedure d...