存儲過程在人事管理子系統(tǒng)中的應(yīng)用
發(fā)布時間:2019-08-14 來源: 人生感悟 點擊:
[摘 要]分析了存儲過程的特性和優(yōu)勢,總結(jié)出存儲過程將提高數(shù)據(jù)庫管理系統(tǒng)的效率和性能,在人事管理子系統(tǒng)中利用存儲過程實現(xiàn)復(fù)雜報表中的數(shù)據(jù)統(tǒng)計功能,并給出存儲過程的具體實現(xiàn)。
[關(guān)鍵詞]人事管理子系統(tǒng) 存儲過程 VB
作者簡介:葛明明(1977-),女,漢族,吉林長嶺人,助教,工學(xué)碩士,主要研究方向:軟件工程與軟件自動化;龔自霞(1978-),女(漢族),安徽巢湖人,助教,工學(xué)碩士,主要研究方向:計算機網(wǎng)絡(luò)技術(shù)及其應(yīng)用。
為了加快校園信息電子化的進程,我院立項開發(fā)OA校園辦公自動化系統(tǒng)。項目主要涉及教學(xué)運行、科研管理、人事管理、教材管理、財務(wù)管理等幾個子系統(tǒng)。系統(tǒng)采用客戶/服務(wù)器(C/S)的工作模式,服務(wù)器端主要用于存放數(shù)據(jù),客戶端的應(yīng)用程序負責數(shù)據(jù)處理。如何提高應(yīng)用程序的執(zhí)行效率、提高整個管理系統(tǒng)的性能是個重要問題。
通過實踐驗證,在開發(fā)中適當?shù)氖褂么鎯^程將減少網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)暮臅r,有利于提高整個系統(tǒng)的性能,并對于系統(tǒng)和功能的修改和維護也有很大幫助。本文將對存儲過程及其在人事管理子系統(tǒng)中的應(yīng)用進行分析,并提供人事管理模塊中利用存儲過程制作復(fù)雜報表的應(yīng)用實例。
一、存儲過程
所謂存儲過程(Stored Procedure),就是存儲在數(shù)據(jù)庫服務(wù)器上的一組預(yù)先編譯好的SQL語句,就好像一個已經(jīng)定義好的函數(shù)。它具有以下幾個特性:
執(zhí)行速度快,存儲過程在創(chuàng)建的時候就經(jīng)過了語法檢查和性能優(yōu)化,它在第一次調(diào)用后就駐留內(nèi)存中,不必再經(jīng)過編譯和優(yōu)化,而一般SQL語句每執(zhí)行一次就編譯一次;
當對數(shù)據(jù)庫進行復(fù)雜操作時,可將此復(fù)雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處結(jié)合一起使用;
存儲過程可以重復(fù)使用;
安全性高,可設(shè)定只有某此用戶才具有對指定存儲過程的使用權(quán)。
二、使用存儲過程的優(yōu)勢
存儲過程在創(chuàng)建的時候就被數(shù)據(jù)庫引擎編譯,編譯后生成的結(jié)果已經(jīng)存放在服務(wù)器端。在存儲過程中可以包含大量的SQL語句,但存儲過程是作為一個獨立的單位來使用的。在調(diào)用的時候只用一個語句就可以實現(xiàn),所以大大減少了網(wǎng)絡(luò)上數(shù)據(jù)的傳輸。
利用存儲過程,應(yīng)用程序只需傳送存儲過程名和相應(yīng)的參數(shù),服務(wù)器端執(zhí)行完存儲過程只發(fā)送給客戶端執(zhí)行的結(jié)果,避免客戶端和服務(wù)器端之間頻繁交換數(shù)據(jù)造成的網(wǎng)絡(luò)延時甚至網(wǎng)絡(luò)堵塞。
存儲過程是存儲在數(shù)據(jù)庫服務(wù)器上的一組預(yù)編譯SQL語句,將SQL語句和源代碼分離,使得SQL語句和源代碼分開維護成為可能。可以按照不同的功能模塊,設(shè)計不同的存儲過程以供使用。
盡管調(diào)試存儲過程比較困難,但對于使用頻率高或者結(jié)構(gòu)復(fù)雜的SQL語句適合采用存儲過程來編寫。
人事管理子系統(tǒng)中需要生成比較復(fù)雜的統(tǒng)計報表。并且報表的格式和數(shù)據(jù)要求每年總有一點變動。為了避免修改程序去升級每個客戶端,通過存儲過程,只需發(fā)一條SQL指令,修改存在服務(wù)器上的存儲過程就可以實現(xiàn),對于客戶端卻沒有影響。
三、在人事管理系統(tǒng)中使用存儲過程統(tǒng)計報表數(shù)據(jù)
由于報表涉及大量統(tǒng)計工作,表格中的每個單元格數(shù)據(jù)都需要通過計算來獲得,所以實現(xiàn)的策略是使用存儲過程作為水晶報表的數(shù)據(jù)源,存儲過程的任務(wù)就是在每一次被調(diào)用時生成一張臨時表來存儲報表中需要的數(shù)據(jù),并進行計算將統(tǒng)計數(shù)據(jù)填充到臨時表中。
由于篇幅限制,此處僅分析涉及“專業(yè)技術(shù)人才管理”報表的存儲過程。
系統(tǒng)使用的開發(fā)工具有VB6+SQL server 2000+Excel 2000+水晶報表。
存儲過程涉及的數(shù)據(jù)表的主表是教師基本情況表,還有性別表、民族表、政治面貌表、學(xué)位表、學(xué)歷表、職稱表、職務(wù)表等副表,為了便于維護信息,主表中涉及的性別、民族、政治面貌等信息存儲的是對應(yīng)編號,副表中存儲的信息是對應(yīng)的編號、名稱,所采用的編碼參考了國家標準。主表(教師基本情況表)的表結(jié)構(gòu)中相關(guān)字段設(shè)計如下:
。ㄒ唬┰诜⻊(wù)器端創(chuàng)建存儲過程
1.創(chuàng)建存儲過程ZYJSRCQK:
負責生成臨時表#ZYJSRCQKB,并調(diào)用存儲過程SEARCH實現(xiàn)統(tǒng)計報表需要的數(shù)據(jù)。
Create Procedure ZYJSRCQK
As
BEGIN
create table #ZYJSRCQKB(--創(chuàng)建臨時表
XMvarchar(40) null,--項目
DMvarchar(10) null, --代碼
C1INTnull,--合計
C2INTnull,--女
C3INT null, --少數(shù)民族
C4INT null,--中共黨員
C5INT null,--博士
C6INT null,--碩士
C7INT null,--港澳臺及外籍人士
C8INT null,--專業(yè)技術(shù)職務(wù)高級
C9INT null,--專業(yè)技術(shù)職務(wù)正高級
C10INT null,--專業(yè)技術(shù)職務(wù)中級
C11INT null,--專業(yè)技術(shù)職務(wù)初級
C12INT null,--學(xué)歷研究生
C13INT null,--學(xué)歷大學(xué)本科
C14INT null,--學(xué)歷大學(xué)?
C15INT null,--學(xué)歷中專
C16INT null,--學(xué)歷高中及以下
C17INT null,--年齡35及以下
C18INT null,--年齡36~40
C19INT null,--年齡41~45
C20INT null,--年齡46~50
C21INT null,--年齡51~54
C22INT null,--年齡55及以上
PX INT NULL) --排序字段
Insert into #ZYJSRCQKB(PX,XM,DM,
C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,
C15,C16,C17,C18,C19,C20,C21,C22) EXEC SEARCH """其中,在管理崗位工作的""","""2""","GW=""管理""","2"
insert into #ZYJSRCQKB(PX,XM,DM) values(3,"其中,具有職業(yè)資格的","3")
insert into #ZYJSRCQKB(PX,XM,DM) values(4,"一、專業(yè)技術(shù)職務(wù)","-")
insert into #ZYJSRCQKB(PX,XM,DM,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,
C15,C16,C17,C18,C19,C20,C21,C22) EXEC SEARCH """高級職務(wù)""","""4""","SUBSTRING(ZC,3,1)=""1"" OR SUBSTRING(ZC,3,1)=""2""","5"
insert into #ZYJSRCQKB(PX,XM,DM,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,
相關(guān)熱詞搜索:人事管理 存儲過程 系統(tǒng)中的應(yīng)用
熱點文章閱讀