前沿拓展:
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
例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)
10-11函数调用
SELECT * FROM course_unpassed('2007070103')
例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
删除函数
例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 '无不及格课程'
例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
例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
例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
拓展知识:
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/9248.html