在這次機房收費系統(tǒng)中學(xué)習(xí)到的東西還真不少,
機房收費系統(tǒng)存儲過程
。E-R圖,視圖,存儲過程,觸發(fā)器等等。這些東西都是在之前學(xué)習(xí)過的,這次運用到實踐中,收獲倍增。運用存儲過程的好處
1、存儲過程只在創(chuàng)造時進行編譯,以后每次執(zhí)行存儲過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度。
2、當(dāng)對數(shù)據(jù)庫進行復(fù)雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復(fù)雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用。
3、過程可以重復(fù)使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量
4、全性高,可設(shè)定只有某些用戶才具有對指定存儲過程的使用權(quán)。
存儲過程的實際應(yīng)用
在退卡中我用到了存儲過程,下面就以退卡為例。
創(chuàng)建一個存儲過程
<span style="font-family:KaiTi_GB2312;font-size:18px;">create procedure proc_CloseCard --創(chuàng)建存儲過程@cardId varchar(10),@closeCardUserId varchar(10) --定義參數(shù)asbegin--在退卡表中插入數(shù)據(jù)insert into t_CloseCard(cardId,closeCash,registryDate,registryTime,isChecked,registryUserId) select cardId ,balance ,date,time, isChecked ,userId from t_card where cardId =@cardId--將卡表中的相關(guān)卡刪除delete from t_card where cardId=@cardId--對退卡表進行更新update t_closecard set closeuserId =@closeCardUserId where cardId =@cardId end</span>
退卡D層對存儲過程的調(diào)用
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary> ' 添加退卡信息 ' </summary> ' <param name="_enCloseCardEntity">退卡實體類</param> '<returns>插入成功返回True,失敗返回False</returns> Public Function AddCloseCard(ByVal enCloseCardEntity As CloseCardEntity) As Boolean Dim sqlHelper As New SQLHelper '實例化SQLHelper 'SQL語句 Dim cmdText As String = "proc_CloseCard" '定義命令類型,存儲過程 Dim cmdType As CommandType cmdType = CommandType.StoredProcedure '定義參數(shù)數(shù)組 Dim sqlParams As SqlParameter() '給參數(shù)數(shù)組賦值 sqlParams = {New SqlParameter("@cardId", enCloseCardEntity.cardId), New SqlParameter("@closeCardUserId", SharedUserId.userId)} Return sqlHelper.ExecuteNoQuery(cmdText, cmdType, sqlParams) End Function</span>用存儲過程進行操作的結(jié)果和用SQL語句的結(jié)果是一樣的,
電腦資料
《機房收費系統(tǒng)存儲過程》(http://www.msguai.com)。只是一個SQL語句寫在了數(shù)據(jù)庫端,一個寫在了編譯端。用過以后就會發(fā)現(xiàn)存儲過程其實挺簡單的。但是聽師傅說存儲過程是面向過程的,不符合面向?qū)ο蟮乃枷。以后還是少用。但是現(xiàn)在處于學(xué)習(xí)階段,用用也是好的,最起碼要會用。在實踐中不斷進步。