在沒有進行機房之前,就聽到童鞋們講在機房重構時,會用儲存過程,用這個,用那個,自己想,用它們有什麼用?能給我們帶來方便嗎?一、什麼是儲存過程?
是在大型資料庫系統中,一組為了完成特定功能的sql語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過制定儲存過程的名字並給出引數來執行它。儲存過程是資料庫中的乙個重要物件。
二、為什麼要使用儲存過程?
看優點三、儲存過程的優缺點
1.優點
(1).重複使用,可以減少資料庫開發人員分工作量。
(2).減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。
(3).安全性。引數化的儲存過程可以防止sql注入式攻擊。
2.缺點
(1).除錯麻煩。
(2).移植問題。
(3).重新編譯問題。
(4).大量使用儲存過程,難維護。
四、基本語法
create procedure sp_name //sp_name 建立儲存過程的 名字
@[引數名][型別],@[引數名][型別]
asbegin
......
end
以下我組合查詢時,用到的乙個儲存過程
alter procedure [dbo].[groupquery]
-- add the parameters for the stored procedure here 在這裡新增儲存過程的引數
@field1 char(20),
@field2 char(20),
@field3 char(20),
@operator1 char(20),
@operator2 char(20),
@operator3 char(20),
@context1 char(20),
@context2 char(20),
@context3 char(20),
@relation1 char(20),
@relation2 char(20),
@getdbtable char(20) --得到具體的表
asbegin
declare @sql varchar(500)
set @sql = 'select * from '+@getdbtable+' where'+ char(32)+@field1 +@operator1+char(39)+@context1+char(39)
if (@relation1!= '')
set @sql=@sql+char(32)+@relation1+char(32)+@field2+char(32)+@operator2+char(32)+char(39)+@context2+char(39)
if (@relation2!= '')
set @sql=@sql+char(32)+@relation2+char(32)+@field3+char(32)+@operator3+char(32)+char(39)+@context3+char(39)
exec(@sql)
end
解釋:
set @sql = 'select * from '+@getdbtable+' where'+ char(32)+@field1 +@operator1+char(39)+@context1+char(39)
追問!sql中的set指的是什麼?
追答!指的是為變數賦值,同時也可以寫成select。
追問!@指的又是什麼?
追答!自定義變數,一般適用於儲存過程和函式當中。
小
結:實踐出真理!說的再多,不如多動動我們的手指。
機房重構 儲存過程
在機房重構過程中七層的主線明白了以後就剩下大量的敲 了,這一過程無疑比較枯燥,因此有必要在機房中嘗試一些新東西,比如,儲存過程。那麼什麼是儲存過程呢?儲存過程是存放在伺服器上的預先編譯好的sql語句,在第一次執行時進行語句檢查和編譯,編譯好的儲存過程在快取記憶體中用於後續呼叫,這樣就可以使儲存過程執...
機房重構 儲存過程
儲存過程 儲存過程 stored procedure 是在大型 資料庫系統 重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。安全性。引數化的儲存過程可以防止sql注...
機房重構 儲存過程
儲存過程 stored procedure 是使用transact sql語言編寫的一段能實現指定功能的程式。其次,這種程式被sql server編譯好後,存放在sql server資料庫中。使用者可以通過儲存過程的名稱和引數傳遞呼叫這些具有指定功能的儲存過程。儲存過程也是資料庫物件。人們通常使用儲...