前沿拓展:
T-SQL編程基礎(chǔ)【例10-1】下面的Declare語句聲明一個(gè)datetime類型的變量,名稱為@rq。
/*函數(shù)說明:標(biāo)量值凹函數(shù)示例
功能:求學(xué)生不及格課程數(shù)
輸入?yún)?shù):@sno學(xué)號(hào)
返回結(jié)果:不及格課程數(shù)
*/
Create function Num_Unpassed(
@sno varchar(12))
Returns **allint
As
Begin
Declare @num **allint /*聲明返回值變量*/
Select @num=count(*)
From stu_grade
Where stu_id=@sno and grade <60 /*根據(jù)學(xué)號(hào)查詢該生不及格課程數(shù)*/
Return @num/*返回返回值變量*/
End
例10-11
定義函數(shù)Course_Unpassed 求某個(gè)學(xué)生不及格的課程名及成績,輸入?yún)?shù)為學(xué)生學(xué)號(hào),返回由不及格課程和成績組成的表
/*定義函數(shù)*/
/*
函數(shù)說明:內(nèi)聯(lián)值函數(shù)示例
功 能:求某個(gè)學(xué)生不及格課程和成績
輸入?yún)?shù):@sno學(xué)號(hào)
返回結(jié)果:不及格課程和成績表
*/
CREATE FUNCTION Course_Unpassed (@sno VARCHAR (12))
Returns Table
AS
RETURN
(SELECT course_name,grade FROM stu_grade,course_info
WHERE stu_grade.stu_id=@sno AND stu_grade.course_id=course_info.course_id AND grade <60)
10-11函數(shù)調(diào)用
SELECT * FROM course_unpassed('2007070103')
例10-12
定義多語句表值函數(shù)Course_Unpassed_1求某個(gè)學(xué)生不及格的課程名稱及成績,輸入?yún)?shù)為學(xué)生學(xué)號(hào),返回值由不及格課程和成績組成的表
/*函數(shù)說明:多語句表值函數(shù)示例
功 能:求某個(gè)學(xué)生不及格課程和成績
輸入?yún)?shù):@sno學(xué)號(hào)
返回結(jié)果:不及格課程和成績表*/
CREATE FUNCTION course_Unpassed_1(@sno VARCHAR(12))
RETURNs @t1 TABLE/*定義返回變量@t1,存放函數(shù)返回的表,下面是表的定義*/
(course_name VARCHAR(20),grade DECIMAL(4,1))
AS/*生成表*/
BEGIN
INSERT INTO @t1
SELECT course_name,grade
FROM stu_grade,course_info
WHERE stu_grade.stu_id=@sno AND stu_grade.course_id=course_info.course_id
AND grade<60
RETURN
END
刪除函數(shù)
例10-13
/*例10-13流程控制語句Bebin…END嵌套示例*/
BEGIN
IF@a>@b
BEGIN
SET @max=@a
PRINT '較大的值為:'
PRINT @max
END
ELSE
BEGIN
SET @max=@b
PRINT '較大的值為:'
PRINT @max
END
END
/*!??!注意:僅是示例,無法運(yùn)行的?。?!*/
例10-14
/*例10-14查詢學(xué)生2007070102的英語成績是否及格*/
DECLARE @grade DECIMAL(4,1)/*Delcare @grade **ALLINT是錯(cuò)誤的*/
SELECT @grade = grade
FROM stu_grade ,course_info
WHERE stu_grade.course_id=course_info.course_id
AND stu_id='2007070102'/*要查詢的學(xué)生學(xué)號(hào)*/
AND course_info.course_name='英語'
IF @grade<60
PRINT '不及格'
ELSE
PRINT '及格'
例10-15
/*例10-15 利用Exists查詢學(xué)生2007070102是否有不及格課程*/
IF EXISTS (SELECT*FROM stu_grade WHERE stu_id='2007070102'AND grade<60)
PRINT '有不及格課程'
ELSE
PRINT '無不及格課程'
例10-16
/*例10-16 根據(jù)學(xué)生的學(xué)制輸出學(xué)生的類別:本科、專科、專升本*/
SELECT stu_id,name,類別=CASE stu_xz
WHEN '2' THEN '專升本'
WHEN '3' THEN '???#039;
WHEN '4' THEN '本科'
END
FROM stu_info
例10-17
/*例10-17 根據(jù)學(xué)生的百分制成績,輸出成績對應(yīng)的5個(gè)類別:優(yōu)秀、良好、中等、及格和不及格。*/
SELECT stu_id,course_id,成績類別=CASE
WHEN grade >=90 THEN '優(yōu)秀'
WHEN grade >=80 AND grade <90 THEN '良好'
WHEN grade >=70 AND grade <80 THEN '中等'
WHEN grade >=60 AND grade <70 THEN '及格'
WHEN grade <60 THEN '不及格'
END
FROM stu_grade
例10-18
/*例10-18利用Goto語句實(shí)現(xiàn)從1到100的和*/
DECLARE @count INT,@sum INT
SET @count=1
SET @sum=0
Loop:
SET @sum=@sum+@count
SET @count =@count+1
IF @count<=100
GOTO Loop
SELECT @count ,@sum
例10-19
/*例10-19利用while語句實(shí)現(xiàn)從1到100的和*/
DECLARE @count INT,@sum INT
SET @count=1
SET @sum=0
WHILE @count<=100
BEGIN
SET @sum=@sum+@count
SET @count =@count+1
END
SELECT @count ,@sum
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://www.drmqd.com.cn/9248.html