【正文】
人數(shù)進(jìn)行統(tǒng)計(jì),放入統(tǒng)計(jì)表( TJB)中。實(shí)現(xiàn)該功能采用 SQL Server 2022的兩種存儲(chǔ)過程:一種是傳統(tǒng)的 TSQL語句,另一種采用 CLR方法。 編寫思路: ( 1)清空 TJB表,插入一行所有分?jǐn)?shù)段的人數(shù)都為 0的所要查找的課程的記錄。 ( 2)判斷所查的課程號(hào)在 CJB表中是否有記錄,若有則查找出各個(gè)分?jǐn)?shù)段的人數(shù)并且更新到 TJB表中。 ? TSQL存儲(chǔ)過程代碼 方法一: create PROCEDURE [dbo].[TJ_CJ](@kch char(3)) as truncate table TJB insert into TJB values(@kch,0,0,0,0,0) if exists (select * from CJB where KCH=@kch) begin update TJB set RS1=(select count(*) from CJB where CJ=0 and CJ60 and KCH=@kch) update TJB set RS2=(select count(*) from CJB where CJ=60 and CJ70 and KCH=@kch) update TJB set RS3=(select count(*) from CJB where CJ=70 and CJ80 and KCH=@kch) update TJB set RS4=(select count(*) from CJB where CJ=80 and CJ90 and KCH=@kch) update TJB set RS5=(select count(*) from CJB where CJ=90 and CJ=100 and KCH=@kch) end 方法二: 如果選擇統(tǒng)計(jì)的課程在成績(jī)表( CJB)已經(jīng)存在,可以采用下列代碼完成統(tǒng)計(jì)功能,并且代碼效率較高。但 CJB表中沒有所選擇的課程記錄,執(zhí)行的結(jié)果是各個(gè)分?jǐn)?shù)段的人數(shù)為 null。 create procedure[dbo].[TJ_CJ] (@KCH varchar(3)) as begin delete from TJB insert into TJB(KCH,RS1,RS2,RS3,RS4,RS5) select @KCH, sum(case when CJ 60 then 1 else 0 end), sum(case when CJ = 60 and CJ = 69 then 1 else 0 end), sum(case when CJ = 70 and CJ = 79 then 1 else 0 end), sum(case when CJ = 80 and CJ = 89 then 1 else 0 end), sum(case when CJ = 90 and CJ = 100 then 1 else 0 end) from CJB where KCH = @KCH end ? CLR存儲(chǔ) 過程(采用 C)代碼如下所示,實(shí)現(xiàn)與方法一同樣的功能 ※ 下列為綜合應(yīng)用實(shí)習(xí)功能的菜單,其中:標(biāo)注“ *”為學(xué)生練習(xí)完成的功能。 ( 1)學(xué)生信息管理: 學(xué)生信息錄入 學(xué)生信息查詢 學(xué)生學(xué)分排序( *) ( 2)課程信息管理: 課程信息錄入( *) 課程信息查詢( *) ( 3)成績(jī)管理: 成績(jī)信息錄入 學(xué)生成績(jī)查詢( *) 課程成績(jī)排序( *) 成績(jī)分布分析 ( 4)系統(tǒng)登錄( *): 該功能需要使用登錄表,登錄成功,進(jìn)入系統(tǒng)主菜單界面。