SQL Server數(shù)據(jù)庫回顧之存儲過程的創(chuàng)建和應(yīng)用
存儲過程(stored procedure)可以很方便地來修改sql語句,直接在服務(wù)器上修改,而不用再到程序中修改,然后再保存,存儲過程可以一定程度的保證數(shù)據(jù)的安全性。
1.存儲過程大大增強了sql語言的功能和靈活性,存儲過程可以用流程控制語句編寫,有很強的靈活性。
2.存儲過程可以保證數(shù)據(jù)的安全性和完整性,通過存儲過程可以使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲結(jié)構(gòu)可以使相關(guān)的動作在一起發(fā)生,從而可以維護數(shù)據(jù)庫的完整性。
3.運用存儲過程能很快的執(zhí)行,在運行存儲過程前,數(shù)據(jù)庫已經(jīng)對其進行了語法和句法分析,并且給出了優(yōu)化執(zhí)行方案,這種已經(jīng)編譯好的過程可以極大地改善sql語句的性能,執(zhí)行sql語句的大部分工作已經(jīng)完成。
4.在一定程度上可以降低網(wǎng)絡(luò)的通信量,如果是sql語句,必須要把sql語句傳給服務(wù)器然后執(zhí)行sql語句。
5.可以集中控制sql語句:比如說當(dāng)一個公司的規(guī)則發(fā)生變化的時候,只要改變服務(wù)器上的存儲過程就行,一般公司的規(guī)則經(jīng)常變化,如果把體現(xiàn)規(guī)則的運算程序放入應(yīng)用程序中,則當(dāng)公司規(guī)則變化時,就需要修改應(yīng)用程序工作量非常之大,還得修改、發(fā)行和安裝應(yīng)用程序。如果把規(guī)則放在存儲過程中,則當(dāng)企業(yè)規(guī)則發(fā)生變化的時候,只要修改存儲過程就可以了,應(yīng)用程序就無需變化。
- Create PROCEDURE [dbo].[news_selectNewNews]
- AS
- BEGIN
- select top10 n.id,n.title,n.createTime,c.[name],c.id as caId
- from news n
- inner join category c on n.caId=c.id
- order by n.createTime desc
- END
執(zhí)行存儲過程的時候,將數(shù)據(jù)庫中建好的存儲過程,交給界面層然后傳給Dal層處理,只要設(shè)置commandtype=StoredProdure,這樣數(shù)據(jù)庫就可以處理存儲過程了。
- Public DataTable test(string ProcName)
- {
- DataTable dt=new DataTable();
- Cmd=newSqlCommand(procName,GetConn());(打開連接,傳入存儲過程)
- cmd.CommandType=CommandType.StoredProcedure;(執(zhí)行sql語句和存儲過程的差別)
- using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))
- {
- Dt.load(sdr);
- }
- Returnsdr;
- }
關(guān)于存儲過程的知識就介紹到這里,如果想了解更多SQL Server數(shù)據(jù)庫的知識,這里的文章很精彩:http://database.51cto.com/sqlserver/,相信一定會帶給您收獲的。
【編輯推薦】