实验10 T-SQL程序设计与游标设计

实验10.1 T-SQL程序设计逻辑

/1计算1~100所有能被3整除的个数和总和/

declare 
@sum smallint,
@I smallint ,
@nums smallint
set @sum=0
set @I=1
set @nums=0
while(@I<=100)
	begin 
	 if(@I%3=0)
	   begin 
		   set @sum=@sum+@I
		   set @nums=@nums+1
	   end
	  set @I=@I+1
	end
print'总和是:'+str(@sum)
print'个数是:'+str(@nums)

运行结果:
在这里插入图片描述


select * from Student

学生表:
在这里插入图片描述


/2从学生表选取属性列,如果为男输出M,如果为女输出F/

use testbase2
select SNO as 学号,SN as 姓名,性别=
	CASE SEX
		when '男' then 'M'
		when '女' then 'F'
	end
from Student

在这里插入图片描述


实验10.2 面向复杂T-SQL程序设计

/从数据库testbase2查询所有同学选课成绩情况:姓名,课程名,成绩/
/要求:凡成绩为空输出“未考”,小于60输出 不及格 60~70分输出及格/
/要求:70~80分输出中 80~90输出 良好 90以上输出 优/


select SN as 姓名,Course.CN as 课程名,
	成绩=
	 case
		when Student.SCORE is null then '未考'
		when Student.SCORE < 60 then '不及格'
		when Student.SCORE >=60 and Student.SCORE<70 then '及格'
		when Student.SCORE >=70 and Student.SCORE<80 then '中'
		when Student.SCORE >=80 and Student.SCORE<90 then '良好'
		when Student.SCORE >=90  then '优'
	end
from SC,Student,Course
where Student.SNO=SC.SNO and Course.CNO=SC.CNO
order by Student.SNO,Course.CNO,Student.SCORE desc
go

在这里插入图片描述


开始的教师工资

/给教师增加工资/
/要求必须任2门以上课程且涨幅总收入分成3个级别,4000元以上涨300元/
/3000元以上涨200元,3000元以下涨100元,只任一门课程的涨50元。其他情况不变/


use testbase2
update Teacher set SAL = sal+
	case 
		when Teacher.TNO IN(
		 select TC.CNO from Teacher,TC
		  where Teacher.TNO=tc.CNO and (SAL+comm)>=4000
		  GROUP by tc.CNO having COUNT(*)>=2
		 )then 300
		when Teacher.TNO in(
		 select tc.CNO from Teacher,TC
		 where Teacher.TNO = tc.CNO and (SAL+COMM)>=3000 and (SAL+COMM)<4000
		 GROUP by tc.CNO having COUNT (*)>=2
		 )then 200
		when Teacher.TNO in(
		 select tc.CNO from Teacher,TC
		 where Teacher.TNO = tc.CNO and (SAL+COMM)<3000
		 GROUP by tc.CNO having COUNT (*)>=2
		 )then 100
		when Teacher.TNO in(
		 select tc.CNO from Teacher,TC
		 where Teacher.TNO = tc.CNO 
		 GROUP by tc.CNO having COUNT (*)=1
		 )then 50
	else 0
 end 
go

在这里插入图片描述
在这里插入图片描述


10.3 使用游标

1定义一个游标Cursor_Famale
要求:该游标返回所有女同学的基本信息,再有表中查找并显示牛莉的信息。
2创建一个存储过程Pro_C,返回一个包含所有选修数据库课程的嘘声基本信息的游标。利用该存储过程,通过学生姓名查找学生王一山是否选修了数据库课程,如果选修了,则给出其成绩。

Declare
@SNO char(6),
@SNAME char(8),
@SEX char(2),
@AGE tinyint,
@DEPT char(10)
declare Cursor_Famale cursor for select SNO,SNAME,SEX,AGE,DEPT FROM Student
open Cursor_Famale 
fetch next from Cursor_Famale into @SNO,@SNAME,@SEX,@AGE,@DEPT
while @@fetch_status = 0
	 begin
	 if @SNAME='牛莉'
		begin 
		 print '找到牛莉的信息如下:'
		 print @SNO+' '+@SNAME+' '+@SEX+' '+convert(char(2),@AGE)+' '+@DEPT
		 break
		end
	fetch next from Cursor_Famale into @SNO,@SNAME,@SEX,@AGE,@DEPT
	end
if @@fetch_status !=0 print'很抱歉,没有找到牛莉的信息!'
close Cursor_Famale
deallocate Cursor_Famale

如果没有找到用户名:
在这里插入图片描述
如果找到用户名:
在这里插入图片描述
/创建一个存储过程Pro_C,返回一个包含所有选修数据库课程的学生基本信息的游标/
/利用该存储过程,通过学生姓名查找王一山是否选修了数据库课程,如果选修了,给出其成绩/

/1创建存储过程Pro_C/
2/利用存储过程,通过姓名张一山查找是否选修了数据库课程,如果是,给出成绩/

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值