sql server2008下载

前沿拓展:


T-SQL编程基础【例10-1】下面的Declare语句声明一个datetime类型的变量,名称为@rq。

/*函数说明:标量值凹函数示例

功能:求学生不及格课程数

输入参数:@sno学号

返回结果:不及格课程数

*/

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 /*根据学号查询该生不及格课程数*/

Return @num/*返回返回值变量*/

End

sql server2008下载

例10-11

定义函数Course_Unpassed 求某个学生不及格的课程名及成绩,输入参数为学生学号,返回由不及格课程和成绩组成的表

/*定义函数*/

/*

函数说明:内联值函数示例

功 能:求某个学生不及格课程和成绩

输入参数:@sno学号

返回结果:不及格课程和成绩表

*/

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)

sql server2008下载

10-11函数调用

SELECT * FROM course_unpassed('2007070103')

sql server2008下载

例10-12

定义多语句表值函数Course_Unpassed_1求某个学生不及格的课程名称及成绩,输入参数为学生学号,返回值由不及格课程和成绩组成的表

/*函数说明:多语句表值函数示例

功 能:求某个学生不及格课程和成绩

输入参数:@sno学号

返回结果:不及格课程和成绩表*/

CREATE FUNCTION course_Unpassed_1(@sno VARCHAR(12))

RETURNs @t1 TABLE/*定义返回变量@t1,存放函数返回的表,下面是表的定义*/

(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

sql server2008下载

删除函数

sql server2008下载

sql server2008下载

例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

/*!!!注意:仅是示例,无法运行的!!!*/

例10-14

/*例10-14查询学生2007070102的英语成绩是否及格*/

DECLARE @grade DECIMAL(4,1)/*Delcare @grade **ALLINT是错误的*/

SELECT @grade = grade

FROM stu_grade ,course_info

WHERE stu_grade.course_id=course_info.course_id

AND stu_id='2007070102'/*要查询的学生学号*/

AND course_info.course_name='英语'

IF @grade<60

PRINT '不及格'

ELSE

PRINT '及格'

例10-15

/*例10-15 利用Exists查询学生2007070102是否有不及格课程*/

IF EXISTS (SELECT*FROM stu_grade WHERE stu_id='2007070102'AND grade<60)

PRINT '有不及格课程'

ELSE

PRINT '无不及格课程'

sql server2008下载

例10-16

/*例10-16 根据学生的学制输出学生的类别:本科、专科、专升本*/

SELECT stu_id,name,类别=CASE stu_xz

WHEN '2' THEN '专升本'

WHEN '3' THEN '专科'

WHEN '4' THEN '本科'

END

FROM stu_info

例10-17

/*例10-17 根据学生的百分制成绩,输出成绩对应的5个类别:优秀、良好、中等、及格和不及格。*/

SELECT stu_id,course_id,成绩类别=CASE

WHEN grade >=90 THEN '优秀'

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

sql server2008下载

例10-18

/*例10-18利用Goto语句实现从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

sql server2008下载

sql server2008下载

例10-19

/*例10-19利用while语句实现从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

sql server2008下载

sql server2008下载

拓展知识:

原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/9248.html