SQL存儲過程的功能
SQL存儲過程使我們在使用SQL數據庫時經常可以用到的,下面就讓我們來一起了解一下SQL存儲過程都能帶來什么樣的好處。
SQL存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中。用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。
* SQL存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
* 可保證數據的安全性和完整性。
# 通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數據庫,從而保證數據的安全。
# 通過SQL存儲過程可以使相關的動作在一起發生,從而可以維護數據庫的完整性。
* 在運行存儲過程前,數據庫已對其進行了語法和句法分析,并給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。由于執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。
* 可以降低網絡的通信量。
* 使體現企業規則的運算程序放入數據庫服務器中,以便:
# 集中控制。
# 當企業規則發生變化時在服務器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。
- Create proc[edure] procedue_name
- [@parameter data_type][output]
- [with]{recompile|encryption}
- as
- sql_statement
解釋:
output:表示此參數是可傳回的
with {recompile|encryption}
recompile:表示每次執行此存儲過程時都重新編譯一次
encryption:所創建的存儲過程的內容會被加密
如:
表book的內容如下
編號 書名 價格
001 C語言入門 $30
002 PowerBuilder報表開發 $52
實例1:查詢表Book的內容的存儲過程
- create proc query_book
- as
- select * from book
- go
- exec query_book
實例2:
加入一筆記錄到表book,并查詢此表中所有書籍的總金額
- Create proc insert_book
- @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
- with encryption ---------加密
- as
- insert book(編號,書名,價格) Values(@param1,@param2,@param3)
- select @param4=sum(價格) from book
- go
執行例子:
- declare @total_price money
- exec insert_book '003','Delphi 控件開發指南',$100,@total_price
- print '總金額為'+convert(varchar,@total_price)
- go
SQL存儲過程的3種傳回值:
1)、以Return傳回整數
2)、以output格式傳回參數
3)、Recordset
【編輯推薦】