機房收費系統重構之儲存過程的使用

2021-07-06 08:21:57 字數 3431 閱讀 9476

從一開始對於機房收費系統的無從下手,到現在已經接近尾聲,像冬天的迷霧一樣,隨著時間散開了去,對於其也是越來越清晰,想一想,這種學習的過程還真是美妙。

當然只學習不去總結是沒有意義的。今天我就來把儲存過程的使用總結一下。拿使用者註冊來說,就是往資料庫裡新增使用者,以方便更多的使用者使用。那麼使用者註冊我們要注意到什麼呢?

1.通過卡號判斷使用者是否已經存在。

如果不存在該使用者:

2.將資訊寫入學生表。

3.更新充值記錄表

4、更新卡表中的餘額。

我們分析可以得到,如果不存在該使用者,我們需要同時改動三個表。當然,你可以去一條一條的去寫,但是這種做法不是我們想要的,今天是三個表,下次是三十個表,你還一條一條的寫?所以在這裡我們就引入了儲存過程。

定義:將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來, 那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。

講到這裡,可能有人要問:這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增這個技術呢?

那麼儲存過程與一般的sql語句有什麼區別呢?

1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行複雜操作時(如對多個表進行update,insert,query,delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量

4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權

1.系統儲存過程:以sp_開頭,用來進行系統的各項設定.取得資訊.相關管理工作,如 sp_help就是取得指定物件的相關資訊

2.擴充套件儲存過程 以xp_開頭,用來呼叫作業系統提供的功能

3.使用者自定義的儲存過程,這是我們所指的儲存過程

常用格式

create proceduresp_name

@[引數名] [型別],@[引數名] [型別]

asbegin

.........

end1.基本語法:exec sp_name [引數名]

1.基本語法:

drop procedure sp_name

2.注意事項

(1)不能在乙個儲存過程中刪除另乙個儲存過程,只能呼叫另乙個儲存過程。

就好比機房收費系統中註冊中用到的:?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

createprocedure[dbo].[proc_register]

@cardnochar(10),@studentnochar(10),@namentext,@***nchar(10),@departmentchar(10),@gradenchar(10),@classgradenchar(10),

@cashdecimal(18,2),@cardstatuechar(16),@cardtypechar(8),

@chargemoneydecimal(10,4),@chargedatetime datetime,@usernamechar(10),

@statue ntext,@registerdatetimedate,@checkstatuechar(10)

as

begin

--新增卡表

insertintot_cardinfo (cardno ,studentno ,cardstatue ,cash,cardtype ,registerdatetime ,username ,checkstatue  )values(@cardno ,@studentno ,@cardstatue ,@cash,@cardtype ,@registerdatetime ,@username ,@checkstatue  )

--新增到學生表

insertintot_studentinfo (studentno ,name,*** ,department ,classgrade ,statue ,grade )values(@studentno ,@name,@***,@department,@classgrade ,@statue,@grade)

--新增到充值記錄表

insertintot_recharge (cardno ,chargedatetime ,chargemoney ,username )values(@cardno ,@chargedatetime,@chargemoney,@username)

end

這樣就可以輕鬆的操作在三個表中,當然儲存過程遠遠不止這些,並且在以後學習中,我們還會繼續研究。

像我們需要修改三張表一樣,當一件同樣的事情,需要我們來做三次,我們就要敢於去想乙個比較高效的辦法,像我之前就沒有去想的這樣一件事情,所以,我們還要去敢想,因為不知道有多少人在我們敢想之前做了出來。

機房收費系統重構之儲存過程

是在大型 資料庫系統 中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。類似於c語言中的函式 用來執行管理任務或應用複雜的業務規則 可以帶引數,也可以返回結果 可以包含資料操作語...

重構機房收費系統 起步

開始機房收費系統重構也半個月過去了。但看自己的系統連乙個簡單的登入還沒有實現。自己不免有些慚愧了。最近自己的學習狀態總的來說還是不錯的。但是由於自己對原來的知識掌握的不好所以導致了自己不知如何下手。總是感覺有好多的問題要解決 寫軟體開發文件。畫資料流程圖 畫e r圖畫 uml圖 學習使用 ea建立資...

機房重構 儲存過程

在機房重構過程中七層的主線明白了以後就剩下大量的敲 了,這一過程無疑比較枯燥,因此有必要在機房中嘗試一些新東西,比如,儲存過程。那麼什麼是儲存過程呢?儲存過程是存放在伺服器上的預先編譯好的sql語句,在第一次執行時進行語句檢查和編譯,編譯好的儲存過程在快取記憶體中用於後續呼叫,這樣就可以使儲存過程執...