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