alter procedure [dbo].[zhkh_sp_checkcompute]
@kcode char(10),--種類
@kjyear int,--會計年度
@period int--會計月度
asdeclare @type int--型別:0-部門,1-員工
declare @mcode char(10)--模組編碼
declare @deptcode char(10)--部門編碼
declare @titlecode char(10)--類別編碼
declare @ttype int--類別種類,1-績效,2-黨委,3-6s,4-無
declare @wnumber decimal(18,6)--權重
declare @number decimal(18,6)--分數
declare @totalnumber decimal(18,6)--總分數
declare @totalnumber1 decimal(18,6)--考核總分數
declare @totalnumber2 decimal(18,6)--領導總分數
declare @lcode char(10)--領導對應操作員編碼
declare @lcode1 char(10)--領導編碼
declare @lscore char(4)--領導評分等級
declare @lscore1 decimal(18,6)--領導評分分數
--分數儲存:0-各考核要素分數,1-最終得分,2-考核總分,3-領導主觀評分
begin
--刪除舊資料
delete from zhkh_basetotal where kcode=@kcode and kjyear=@kjyear and period=@period
select @type=0
declare deptcode_cursor cursor for
select deptid from zhkh_dept where dtype=@kcode order by did
open deptcode_cursor
fetch next from deptcode_cursor into @deptcode
while @@fetch_status=0
begin
--以下計算總考核分數
select @totalnumber1=0
declare weigh_cursor cursor for
select mcode,wnumber from zhkh_v_weigh where kcode=@kcode order by mcode
open weigh_cursor
fetch next from weigh_cursor into @mcode,@wnumber
while @@fetch_status=0
begin
select @number=-1
select @titlecode=titlecode,@ttype=ttype from zhkh_title where kcode=@kcode and mcode=@mcode and ktype=@type
if (@ttype=1)
select @number=objecttotal from kh_basetotal where totaltype=4 and titlecode=@titlecode and kjyear=@kjyear and period=@period and empid=@deptcode
else if (@ttype=2)
select @number=objecttotal from dwkh_basetotal where totaltype=4 and titlecode=@titlecode and kjyear=@kjyear and period=@period and empid=@deptcode
else if (@ttype=3)
select @number=-1
else if (@ttype=4)
select @number=-1
--若大於100或者小於0,則退出本次迴圈
if(@number>100 or @number<0)
begin
select @totalnumber1=@totalnumber1+0
endelse
begin
select @totalnumber1=@totalnumber1+@number*@wnumber
--將各模組分數寫入表中,階段0
insert into zhkh_basetotal(kjyear,period,score,kcode,mcode,empid,btype) values(@kjyear,@period,@number,@kcode,@mcode,@deptcode,0)
endfetch next from weigh_cursor into @mcode,@wnumber
endclose weigh_cursor
deallocate weigh_cursor
--將總分數寫入表中,步驟2
insert into zhkh_basetotal(kjyear,period,score,kcode,empid,btype) values(@kjyear,@period,@totalnumber1,@kcode,@deptcode,2)
--以上計算總考核分數
--以下計算領導主觀印象分數
select @totalnumber2=0
--查詢公司領導
declare zhkhleader_cursor cursor for
select czybm,lcode from zhkh_leader a inner join gy_czygl b on a.empid=b.empno
open zhkhleader_cursor
fetch next from zhkhleader_cursor into @lcode,@lcode1
while @@fetch_status=0
begin
--獲取考核分數
select @lscore=count(1) from zhkh_score where deptcode=@deptcode and lcode=@lcode and kjyear=@kjyear and period=@period
if(@lscore>0)
begin
select @lscore=score from zhkh_score where deptcode=@deptcode and lcode=@lcode
select @lscore1=gaulistmark from kh_gaulist where gaulistcode=@lscore
endelse
begin
select top 1 @lscore1=gaulistmark from kh_gaulist where checkcode='a01' order by gaulistcode
endselect @wnumber=lweigh from zhkh_lweigh where lcode=@lcode1 and deptcode=@deptcode
select @totalnumber2=@totalnumber2+@lscore1*@wnumber
fetch next from zhkhleader_cursor into @lcode,@lcode1
endclose zhkhleader_cursor
deallocate zhkhleader_cursor
--將總分數寫入表中,步驟3
insert into zhkh_basetotal(kjyear,period,score,kcode,empid,btype) values(@kjyear,@period,@totalnumber2,@kcode,@deptcode,3)
--以上計算領導主觀印象分數
--以下計算總分數
select @totalnumber=0
select @wnumber=wnumber from zhkh_colweigh where wid=1--基本考核權重
select @totalnumber=@totalnumber1*@wnumber
select @wnumber=wnumber from zhkh_colweigh where wid=2--領導主觀印象考核權重
select @totalnumber=@totalnumber+@totalnumber2*@wnumber
--將總分數寫入表中,步驟1
insert into zhkh_basetotal(kjyear,period,score,kcode,empid,btype) values(@kjyear,@period,@totalnumber,@kcode,@deptcode,1)
--以上計算總分數
fetch next from deptcode_cursor into @deptcode
endclose deptcode_cursor
deallocate deptcode_cursor
end
在儲存過程中分頁
用儲存過程實現的分頁程式 鄒建 2003.09 引用請保留此資訊 呼叫示例 exec p show 地區資料 exec p show 地區資料 5,3,地區編號,地區名稱,助記碼 地區編號 if exists select from dbo.sysobjects where id object id...
在儲存過程中實現事務
在圖書館管理系統中系統管理員可以進行的操作有 借 還 新增 刪除 修改圖書或新增 刪除 修改讀者等,很多的操作都涉及到多個表的進行,我們一定要保持資料的一致性。如 刪除讀者 操作,會在讀者表 reader 中進行讀者的刪除,該讀者刪除後,借書表 reader book 也沒有必要再保留該讀者的借書記...
在儲存過程中排序分頁
在專案中,會遇到查詢出的結果排序分頁的問題,可以有多種解決方法,乙個是利用開發工具提供的方法,例如.net visual studio中的gridview,就提供了排序,分頁功能。但如果情況複雜,我們可以把排序分頁放到儲存過程來完成。以乙個簡單例子來說明問題 table reportfile fie...