存儲過程複習

 1.定義
存儲過程(Stored Procedure)是一組爲了完成特定功能的SQL語句集,經編譯後存儲在數據庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。
2.使用存儲過程有以下的優點:
* 存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的 運算。

  * 可保證數據的安全性和完整性。

  # 通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數據庫,從而保證數據的安全。

  # 通過存儲過程可以使相關的動作在一起發生,從而可以維護數據庫的完整性。

  * 在運行存儲過程前,數據庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。由於執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。

  * 可以降低網絡的通信量。

  * 使體現企業規則的運算程序放入數據庫服務器中,以便:

  # 集中控制。

  # 當企業規則發生變化時在服務器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。

其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數

 

 

 


--查詢表book內容 的存儲過程
create procedure Jane_select
as
select * from book
go
--執行
exec Jane_select

---加入一筆記錄到表book,並查詢此表中所有書籍的總金額
create procedure Jane_insert
@num varchar(50),@name varchar(50),@money money,@allmoney money output
with encryption ---------加密
as
insert book(BookNum,BookName,BookPrice) values(@num,@name,@money)
select @allmoney=sum(BookPrice) from book
go
--執行
declare @total_price money
exec Jane_insert '003','Delphi 控件開發指南',$100,@total_price
print '總金額爲'+convert(varchar,@total_price)
go
--存儲過程的2種傳回值:
--1)、以Return傳回整數
--2)、以output格式傳回參數

--請實現按編號爲連接條件,將兩個表連接成一個臨時表,該表只含編號.產品名.客戶名.訂金.總金額,
--總金額=訂金*訂數,臨時表放在存儲過程中

create procedure Jane_selectOrder
as
select o.num,o.name1,p.name2,o.value1,count1*value1 as '總金額' from Order1 o inner join Product p
                                                               on o.num=p.num
go
--執行
exec Jane_selectOrder

--用戶想查詢Product表中某編號的存儲過程
create proc Jane_num
@num char(20)
as
select * from Product where num=@num
go
--執行
exec  Jane_num '01'

--sql語句執行的時候要先編譯,然後執行。存儲過程就是編譯好了的一些sql語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章