設(shè)計(jì)目的:
1.運(yùn)用sql基本知識,編寫學(xué)期轉(zhuǎn)換函數(shù)。
2.運(yùn)用sql基本知識,編寫學(xué)分轉(zhuǎn)換函數(shù),將考試成績轉(zhuǎn)換為學(xué)分
3.通過上述函數(shù)的編寫與調(diào)試,熟練掌握 sql函數(shù)的編寫、調(diào)試與使用方法。
設(shè)計(jì)內(nèi)容:
1.根據(jù)需求,分析并設(shè)計(jì)函數(shù)的功能、入口參數(shù)和返回值。
①學(xué)分轉(zhuǎn)換函數(shù)
在學(xué)籍管理中,需要根據(jù)學(xué)生選修課程的成績,查詢所獲學(xué)分情況,如果成績大于等于60分,就可以獲得該課程對應(yīng)的學(xué)分,否則所得學(xué)分為0.這種需求可以通過函數(shù)實(shí)現(xiàn),根據(jù)要求,該函數(shù)的功能以及入口參數(shù)和返回值要求如下。
功能要求:將學(xué)生考試成績轉(zhuǎn)換為學(xué)分的功能。如果考試通過則獲得該課程的學(xué)分,否則獲得學(xué)分為0.
入口參數(shù):成績和課程學(xué)分
返回:返回應(yīng)得學(xué)分
②學(xué)期轉(zhuǎn)換函數(shù)
在學(xué)籍管理中,每門課程都會在規(guī)定學(xué)期(如學(xué)生入學(xué)后的第四學(xué)期開課)而入學(xué)時間不同,對應(yīng)的具體開課時間不同。
例如“面向?qū)ο蟪绦蛟O(shè)計(jì)”規(guī)定學(xué)生入學(xué)后的第四學(xué)期開設(shè),2005年入學(xué)的同學(xué)需要在2006-2007/2學(xué)期學(xué)習(xí)該門課程,而2006年入學(xué)的同學(xué)需要在2007-2008/2學(xué)期學(xué)習(xí)該課程。反過來如果需要統(tǒng)計(jì)2005年入學(xué)同學(xué)在2006-2007/2學(xué)期學(xué)習(xí)哪些課程,這些課程的考試情況怎么樣,需要將2006-2007/2的學(xué)期表示形式轉(zhuǎn)換為4的學(xué)期表示形式,然后再查詢學(xué)生對4學(xué)期開設(shè)課程課程的考試情況即可。
為了完成上述學(xué)期轉(zhuǎn)換的功能,需要設(shè)計(jì)一個學(xué)期轉(zhuǎn)換函數(shù)。該函數(shù)的功能以及入口參數(shù)和返回值要求如下。
功能要求:結(jié)合學(xué)生入學(xué)年份,將如“2006-2007/2”的學(xué)期表述的字符串轉(zhuǎn)換為如1,2,3等表述的數(shù)字方式。例如2005年入學(xué)的同學(xué)的2006-2007/2學(xué)期是其在校的第四學(xué)期。
入口參數(shù):學(xué)年和入學(xué)年份。
返回:數(shù)字表示的學(xué)期。
函數(shù)實(shí)現(xiàn)
1.CreditConvert(功能:學(xué)分轉(zhuǎn)換)
CREATE FUNCTION CreditConvert(@score NUMERIC(3,1),@CCredits NUMERIC(3,1))
--@score : 考試成績
--@CCredits :課程規(guī)定學(xué)分
RERURNS NUMERIC(5,2) --應(yīng)得學(xué)分
AS
BEGIN
RETURN
CASE SIGN(@score-60)--sign函數(shù)取結(jié)果符號,當(dāng)為零時結(jié)果為0
WHEN 1 THEN @CCredits
WHEN 0 THEN @CCredits
WHEN -1 THEN 0
END
END
termConvert(功能:學(xué)期轉(zhuǎn)換)
CREATE FUNCTION termConvert(@term CHAR(11),@clno CHAR(6))
--@term ? 學(xué)年,格式如:2006-2007/2
--@clno ? 班級編號,前兩位代表入學(xué)年份
RETURNS INT --在校第幾學(xué)期
AS
BEGIN
RETURN(CONVERT(NUMERIC,SUBSTRING(@term,1,4))-CONVERT(NUMERIC,'20'+SUBSTRING(@clno,1,2)))*2+CONVERT(NUMERIC,SUBSTRING(@term,11,1))
END
執(zhí)行函數(shù)
①學(xué)分轉(zhuǎn)換函數(shù)
SELECT CName,dbo.CreditConvert(30,CCredits) fail,dbo.CreditConvert(70,CCredits)pass FROM Course
②學(xué)期轉(zhuǎn)換函數(shù)
SELECT dbo.termConvert('2005-2006/2','04')
整理自:教科書《數(shù)據(jù)庫試驗(yàn)指導(dǎo)》 人民郵電出版社
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
sqlserver 自學(xué)筆記 函數(shù)實(shí)訓(xùn) 學(xué)分學(xué)期轉(zhuǎn)換函數(shù)的設(shè)計(jì)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
