第十一章

declare @todayDate char(10),@dispStr varchar(20)
set @todayDate=getdate()
set @dispStr='今天的日期为'

select @dispStr+@todayDate



declare @学号 varchar(10),@姓名 varchar(50),@班级 varchar(50)
declare @所在系 varchar(80),@msgstr varchar(50)
--变量赋值
select @学号=Student.Student_No,@姓名=Student_Name,@班级=Class_Name,@所在系=Department_Name
from Student,Class,Department
    where Student.Student_ClassNo=Class.Class_No
    and Class.Class_DepartmentNo=Department.Department_No
set @msgstr='学号:'+@学号+ '    姓名:'+@姓名+'    班级:'+@班级+'    所在系:'+@所在系
select @msgstr
go

select Student.Student_No,Student_Name,Class_Name,Department_Name
from Student,Class,Department
    where Student.Student_ClassNo=Class.Class_No
    and Class.Class_DepartmentNo=Department.Department_No


declare @dispstr varchar(20)
set @dispstr='这是一个局部变量引用出错的演示'
go
--批处理在这里结束,局部变量被清除
select @dispstr
go

print 'SQLserver的版本信息'
print @@version
print ''
print '服务器名称为:    '+@@servername
print '所用的语言为:    '+@@language
print '所用的服务为:    '+@@servicename
go


begin 
    select * from Student
    select * from Course
end
go

begin 
    declare @num int
    set @num=3
    if exists(select COUNT(selectcourse_courseno)
            from SelectCourse
            group by SelectCourse_StudentNo having COUNT(selectcourse_courseno)>=@num)
                begin
                    select '选课' + cast(@num as char(2))+'门以上的学生名单'
                    select 姓名=Student_Name,COUNT(SelectCourse_CourseNo) 选课门数
                    from SelectCourse,Student
                    where Student.Student_No=SelectCourse.SelectCourse_StudentNo
                    group by Student_Name having COUNT(SelectCourse_CourseNo)>=@num
                    order by COUNT(SelectCourse_CourseNo)desc
                end
    else
        print '没有选课'+cast(@num as char(2))+'门以上的学生'
end
go

declare @score numeric(4,1),@step varchar(6)
begin
select @score=SelectCourse_Score from Student,SelectCourse
    where Student.Student_No=SelectCourse.SelectCourse_StudentNo and Student_Name='王大锤'
    if @score>=90 and @score<=100 set @step=''
    else
        if @score>=80 set @step=''
        else
            if @step>=70 set @step=''
            else
                if @score>=60 set @step='及格'
                else set @step='不及格'
    print @step
end 
go


select 学号=Student_No,姓名=Student_Name,性别=case Student_Sex
                                                when '' then 'Man'
                                                when '' then 'Woman'
                                                end
from Student



begin
    declare @C_name char(20),@C_no char(5)
    set @C_no='20191'
    if exists(select count(*)from SelectCourse where SelectCourse_CourseNo=@C_no)
        begin
        set @C_name=(select distinct Course_Name from SelectCourse,Course
                            where SelectCourse.SelectCourse_CourseNo=Course.Course_No
                            and SelectCourse.SelectCourse_CourseNo=@C_no)
        select'选修课程:'+@C_name+'的学生成绩单'
        select 学号=Student.Student_No,姓名=Student_Name,成绩=Case
                    when SelectCourse_Score is null then '未考'
                    when SelectCourse_Score >=90 and SelectCourse_Score<=100 then '优秀'
                    when SelectCourse_Score>=80 then '良好'
                    when SelectCourse_Score>=70 then ''
                    when SelectCourse_Score>=60 then '及格'
                    when SelectCourse_Score <60 then ' 不及格'
                    end
        from student,selectcourse
        where Student.Student_No=SelectCourse.SelectCourse_StudentNo
        and SelectCourse_CourseNo=@C_no
        end
        else
            print '没有重修'+@c_name+'课程的学生'
end
go

declare @Result INT,@i int
select @Result=1,@i=5
while @i>0
    begin
        set @Result=@Result*@i
        set @i=@i-1
        if @i>1
            continue
        else 
            begin
                print '5的阶乘为:'
                print @Result
                break
            end
    end
go


declare @num int
set @num=0
while(select Class_Amount from Class where Class_No='201801')<90
begin
    update Class set Class_Amount = Class_Amount+10 where Class_No='201801'
    set @num=@num+1
end
select @num as 循环次数
go

declare @sum int,@count int
select @sum=0,@count=1
label_1:
select @sum=@sum+@count
select @count=@count+1
if @count<=5
goto label_1
select @sum as 总和
go

if exists(select*from Class where Class_No='201801')
    return
else
    insert into Class values('200803','01','02','软件工程181',90)
go
select * from Class
go

 

 

posted @ 2019-06-02 17:58  殇之弑梦  阅读(95)  评论(0编辑  收藏  举报