在機房重構過程中七層的主線明白了以後就剩下大量的敲**了,這一過程無疑比較枯燥,因此有必要在機房中嘗試一些新東西,比如,儲存過程。
那麼什麼是儲存過程呢?
儲存過程是存放在伺服器上的預先編譯好的sql語句,在第一次執行時進行語句檢查和編譯,編譯好的儲存過程在快取記憶體中用於後續呼叫,這樣就可以使儲存過程執行時更加迅速,更加高效。儲存過程可以帶有輸入和輸出的引數。
自己的簡單理解就是,將要執行的sql語句寫進資料庫裡,用的時候直接賦參呼叫就ok了。
儲存過程有何好處?
1、復用性強。儲存過程可以重複使用,從而減少資料庫開發的工作量。
2、提高執行效率。儲存過程在建立的時候就進行了編譯以後每次執行時都不需要重新編譯,執行時比一般sql語句更快,提高了效率。
3、減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。
4、更加安全。引數化查詢過程可以防止sql注入攻擊。
如何建立?
如下圖,在你資料庫的可程式設計性中找到儲存過程然後右擊新建
如何寫?
以儲存過程為例,寫入引數和sql語句
use [chargejf]
go/****** object: storedprocedure [dbo].[pro_groupparent] script date: 2016/3/5 16:48:20 ******/
set ansi_nulls on
goset quoted_identifier on
goalter procedure [dbo].[pro_groupparent]
(@cmbname1 varchar(50),
@cmbmark1 varchar(50),
@txtcontent1 varchar(50),
@cmbrelation1 varchar(50),
@cmbname2 varchar(50),
@cmbmark2 varchar(50),
@txtcontent2 varchar(50),
@cmbrelation2 varchar(50),
@cmbname3 varchar(50),
@cmbmark3 varchar(50),
@txtcontent3 varchar(50),
@tablename varchar(50))
asdeclare @tempsql varchar(2000)
begin
set @tempsql = 'select * from ' +@tablename + ' where' +@cmbname1 +@cmbmark1 +char(39) +@txtcontent1 +char(39)
if @cmbrelation1 != ''
begin
set @tempsql =@tempsql +@cmbrelation1 +char(32)+@cmbname2 +@cmbmark2 +char(39) +@txtcontent2 +char(39)
if (@cmbrelation2 is not null)
begin
set @tempsql =@tempsql +@cmbrelation2 +char(32)+@cmbname3 +@cmbmark3 +char(39) +@txtcontent3 +char(39)
endend
execute(@tempsql)
end
d層呼叫
dim cmdtext as string
dim table as datatable
dim sqlparams as sqlparameter() =
cmdtext = "pro_groupparent"
table = sqlhelper.execselect(cmdtext, commandtype.storedprocedure, sqlparams)
return table
之前有寫過組合查詢的部落格,對比會發現儲存過程的使用不過是將sql語句移到了資料庫中而已,用的時候再賦參呼叫,進行增刪改查的一系列操作,從而提高執行效率和**復用,並沒有多麼的難,所以,人啊,不要總是被懶惰嚇倒——告誡自己~ 機房重構 儲存過程
儲存過程 儲存過程 stored procedure 是在大型 資料庫系統 重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。安全性。引數化的儲存過程可以防止sql注...
機房重構 儲存過程
儲存過程 stored procedure 是使用transact sql語言編寫的一段能實現指定功能的程式。其次,這種程式被sql server編譯好後,存放在sql server資料庫中。使用者可以通過儲存過程的名稱和引數傳遞呼叫這些具有指定功能的儲存過程。儲存過程也是資料庫物件。人們通常使用儲...
機房重構 儲存過程
什麼都不說直接上 使用儲存過程其他層的 相同只有dal層 不同.dal層 寫乙個檢查卡號是否存在,新增 public class chackcarddal implements idal.ichackcardidal 寫乙個方法 public function chackcard cardinfo ...