实验九 游标操作和自定义函数

一.实验目的:

掌握游标的声明、游标打开、标数据的提取、游标的关闭和游标的释放

掌握标量值函数的定义与调用

掌握内联表值函数的定义与调用

掌握多语句表值函数的定义与调用

二.实验内容:(所有题写到实验报告中)

1.使用游标打印OrderManagement库中各订单中的总金额,要求按总金额降序排,打印格式如下:

2.使用游标提取学生课程库中3-105课的前三名学生的信息和后三名学生的信息,包括学号、姓名、课程名和成绩。(不考虑成绩相同的情况)

3.使用游标修改OrderManagement库的order_detail表中订单号为***的单价最高的器件的单价和单价最低的器件的单价。

4.创建标量函数,计算指定课程号的课程的平均成绩,然后调用该函数查询某门课的平均成绩。

5.创建内联表值函数,查询指定学号的学生的选课情况(包括学号、姓名、课程号和成绩),然后调用该函数查询某位学生的选课情况,再调用该函数将该生某门课的成绩改为100,重新查询该生成绩检查一下改过来了吗。

6.创建多语句表值函数,查询指定课程号的学生的选课情况(包括学号、姓名和成绩),并将选了该课的学生成绩提高5分,然后调用该函数查询某门课的学生的选课及成绩修改情况。(之前先查询一下该课的成绩以便与调用函数后的成绩作对比。)

use OrderManagement

go

declare @num char(6),@smoney int

declare money cursor

for

select 订单号,sum(单价*数量) as 总金额 from order_detail group by 订单号 order by 总金额 desc

open money

FETCH NEXT FROM money INTO @num,@smoney

PRINT '订单号总金额'

PRINT '-------------'

WHILE @@FETCH_STATUS = 0

 BEGIN

--打印一行数据

 PRINT @num+' ' +CAST(@smoney AS char)

--提取下一行数据

 FETCH NEXT FROM money INTO @num,@smoney

END

close money

deallocate money

go

---2

use stuinfo

go

declare sdegree SCROLL cursor

for

select score.sno,sname,cname,degree from score,student,course where score.cno = '3-105' and score.sno=student.sno and score.cno = course.cno order by degree desc

open sdegree

FETCH FIRST FROM sdegree

FETCH ABSOLUTE 2 FROM sdegree

FETCH ABSOLUTE 3 FROM sdegree

FETCH LAST FROM sdegree

FETCH RELATIVE -1 FROM sdegree

FETCH RELATIVE -2 FROM sdegree

CLOSE sdegree

DEALLOCATE sdegree

---3 使用游标修改OrderManagement库的order_detail表中订单号为***的单价最高的器件的单价和单价最低的器件的单价

use OrderManagement

go

declare @maxmoney int,@minmoney int

declare test scroll cursor

for

select 单价 from order_detail where 订单号='OR-03C' order by 单价 desc

open test

FETCH FIRST FROM test INTO @maxmoney

FETCH LAST FROM test INTO @minmoney

update order_detail set 单价=9999 where 单价=@maxmoney

update order_detail set 单价=0 where 单价=@minmoney

CLOSE sdegree

DEALLOCATE sdegree

---4 创建标量函数,计算指定课程号的课程的平均成绩,然后调用该函数查询某门课的平均成绩

use stuinfo

go

CREATE FUNCTION avg_degree(@cno char(5))

returns int

as

begin

declare @avgg int

select @avgg=AVG(degree) from score where cno=@cno

return @avgg

end

select dbo.avg_degree('3-105')

---5

use stuinfo

go

create function Fun_GetList(@sno char(5))

returns table

return(

select student.sno,student.sname,course.cno,score.degree

from student,course,score

where student.sno=score.sno and score.cno=course.cno

and student.sno=@sno

)

select * from dbo.Fun_GetList('101')

update dbo.Fun_GetList('101') set degree=100 where cno='3-105'

select * from dbo.Fun_GetList('101')

---6

create function dyjhs(@cno char(6))

returns @ss table(sn int,sname char(6),degree int)

begin

insert @ss select student.sno,sname,degree = degree + 5

from student,score

where student.sno = score.sno and score.cno = @cno

return

end

select * from dyjhs('3-105')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 最近打算采用关系型数据库来理一下公司的运营数据,先拿点东西练手找感觉。下面是几个关于学生课业的表,需要建立一个数据...
    九天朱雀阅读 966评论 0 3
  • 1).创建数据库 create database学生选课数据库 2).创建四张表 Create table Stu...
    blvftigd阅读 1,563评论 0 0
  • 一.实验目的: 熟练掌握使用SELECT语句进行数据查询。 二.实验内容:(所有题写到实验报告中) 1.对数据库s...
    LANVNAL阅读 2,937评论 0 1
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,224评论 0 7
  • 三个月前,我失恋了,我不知道那算不算失恋。 那天,天空中下着雨,似乎也迎合了我的心情。和朋友一起,找了家店喝起酒来...
    车小沫阅读 721评论 1 2