資料庫實驗六 儲存過程

2021-08-10 16:32:20 字數 2086 閱讀 9096

什麼是儲存過程?

是一組被編譯在一起的t-sql語句的集合,它們被集合在一起以完成乙個特定的任務。

儲存過程的分類

系統儲存過程

擴充套件儲存過程(提供從sql server到外部程式的介面,以便進行各種維護活動)

使用者自定義的儲存過程

儲存過程的作用

1.模組化程式設計

建立乙個儲存過程存放在資料庫中後,就可以被其他程式反覆使用。

2.執行速度快

儲存過程第一次被執行後,就駐留在記憶體中。以後執行就省去了重新分析、優化、編譯的過程。

3.減少網路通訊量

有了儲存過程後,在網路上只要一條語句就能執行乙個儲存過程。

4.保證系統安全性

通過隔離和加密的方法提高了資料庫的安全性,通過授權可以讓使用者只能執行儲存過程而不能直接訪問數

據庫物件。

建立儲存過程

create  proc[edure]   儲存過程名 

[ [ = default ] [output] 

] [ , … n ]

as  

sql語句 [ … n ]

執行儲存過程

[ exec [ ute ] ] 儲存過程名      [實參 [, output] [, … n] ]

好了,下面開始以我們的實驗為例來看看儲存過程了:

實驗內容:

1, 在圖書管理資料庫中建立乙個儲存過程,在使用者借書之前,判斷該使用者能否借書。並進行測試,同時給出測試**。

2. 在圖書管理資料庫中建立乙個使用者借書的儲存過程,並測試。同時給出測試**。

3, 在圖書管理資料庫中建立乙個使用者還書的儲存過程,並測試。同時給出測試**。

4, 在圖書管理資料庫中建立乙個刪除指定使用者的儲存過程並測試。同時給出測試**。

/*2、在圖書管理資料庫中建立乙個使用者借書的儲存過程,並測試。同時給出測試**。*/

create proc loan_borrow

@借閱證號 varchar(50),@書號 varchar(50)

asinsert into loan(借閱證號,書號,借閱日期)values(@借閱證號,@書號,getdate())

------------執行此儲存過程--------- 

exec loan_borrow @借閱證號='y00001',@書號='a04500011'

/*3、在圖書管理資料庫中建立乙個使用者還書的儲存過程,並測試。同時給出測試**。*/

create proc return_book

@借閱證號 varchar(50),@書號 varchar(50)

asdelete from loan where 借閱證號 = @借閱證號 and 書號 = @書號

------------執行此儲存過程--------- 

exec return_book @借閱證號='y00001',@書號='a04500047'

/*在圖書管理資料庫中建立乙個刪除指定使用者的儲存過程並測試。同時給出測試***/

create proc option_delete

@借閱證號 varchar(50)

asdelete from loan where 借閱證號 = @借閱證號

delete from loanlist where 借閱證號 = @借閱證號

delete from money where 借閱證號 = @借閱證號

delete from reservation where 借閱證號 = @借閱證號

delete from users where 借閱證號 = @借閱證號

------------執行此儲存過程--------- 

exec option_delete 'g01000'

寫完之後總感覺有很多要改的地方,比如第一題的判斷,我是通過return乙個數值,然後使用case語句列印輸出的,但這樣彷彿和真實的圖書館儲存過程有點區別,後來和室友討論之後,感覺還是使用return語句,直接在判斷之後直接print列印出結果,這樣的話在執行儲存過程的時候只需要輸入借閱證號和書號即可,不需要再麻煩的使用case語句了.其他的目前還沒有發現有什麼別的問題,如果有人看到了我的問題,歡迎指出.

資料庫儲存過程的小實驗

實驗4 1 儲存過程 一 實驗目的 1 理解儲存過程的概念 了解儲存過程的型別 2 掌握建立儲存過程的方法 3 掌握執行儲存過程的方法 4 了解檢視 修改 刪除儲存過程的方法 二 實驗內容 1 使用不帶引數的儲存過程 1 建立乙個儲存過程my proc,查詢 學生表 中所有計算機系女生的學號 姓名 ...

資料庫 實驗六 游標 儲存過程的建立和使用

1 游標操作 在選修資料庫中,以student sno,sname,s sage,sdept course cno,cname,cpno,credit sc sno,cno,grade 表為基礎完成下列游標操作。1 在student表中定義乙個包含sno,sname,s sage,sdept的滾動游...

資料庫實驗六

實驗六 資料庫程式設計 一 實驗目的 1.掌握觸發器的概念,了解觸發器的型別 2.掌握儲存過程的建立與執行方法 二 實驗內容 建立觸發器trigger delete,實現以下功能 當訂單表的資料被刪除時,顯示提示資訊 訂單表記錄被修改了 create trigger trigger delete o...