实验六 过程语言.doc_第1页
实验六 过程语言.doc_第2页
实验六 过程语言.doc_第3页
实验六 过程语言.doc_第4页
实验六 过程语言.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验六 过程语言 一、 实验目的:通过本次实验,要求掌握变量定义,流程控制,存储过程,存储函数,游标等内容。二、 实验内容:1)变量的声明和使用,掌握ERROR、ROWCOUNT、IDENTITY等全局变量的使用。2)使用BEGINEND、IFELSE、 WHILECONTINUEBREAK、CASE等流程控制语句。3)使用存储过程。4)使用系统函数和用户自定义函数。5)使用游标处理数据。三、 实验步骤:1) 用T-SQL语言完成1+3+5+199,并使用ERROE判断是否执行成功,如果成功则输出值,否则打印执行失败。使用WHILE语句实现。declare sum intdeclare i intset sum=0set i=1while(i=80 then 优when score =60 then 及格when score 60 then 不及格endfrom choices where sid=800007595 and cid=100446) 存储过程使用T-SQL命令CREATE PROC语句可创建存储过程,基本语法格式如下:CREATE PROCUDURE ( 参数 数据类型 = 默认值 OUTPUT , n ) WITH RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTIONASn执行已存在的存储过程使用语句格式如下:EXECUTE 存储过程名 输入参数值执行创建的存储过程,通过输出参数分析执行结果。 函数用户自定义函数分为:标量值函数、内联表值函数、多语句表值函数。创建多语句内联表值函数,要求根据课程名称查询所有选修些课程的学生姓名和分数。提示:CREATE FUNCTION ()RETURNS tb_scores TABLE()ASBEGININSERT tb_scoresSELECT.RETURNEND/en-us/library/ms186755.aspx 游标不同于查询语句,查询语句只能参整个结果集进行同一种操作,而游标允许定位在结果集的特定行,从结果集的当前位置检索一行或多行,支持对结果集中当前位置的行进行数据修改,为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持,提供脚本、存储过程和触发器中用于访问结果集中数据的T-SQL语句。使用游标必须按照下面顺序:声明游标,打开游标,读取游标中的数据,关闭游标,释放游标。游标声明:DECLARE INSENSITIVE SCROLL CURSORFOR FOR READ ONLY | UPDATE OF 打开游标:OPEN GLOBAL | 提取数据:FETCH NEXR | PRIOR | FIRSR | LAST | ABSOLUTE n | 整型变量 | RELATIVE n | 整型变量FROM GLOBAL | 游标变量名 INTO 变量名列表 关闭游标:CLOSE GLOBAL | 释放游标:DEALLOCATE GLOBAL | /zh-cn/library/ms180169.aspx 实验内容创建一个存储过程,该存储过程实现的功能:查找出选修database课程并且期末成绩为不及格(score60)的学生,现张老师法外开恩,决定给这些不及格但是分数大于45分的同学加上五分平时分,执行存储过程后,要求显示出加完分后,仍然挂科的同学。具体要求:1、 显示格式为:,要求用函数实现该显示功能;2、 加分使用游标实现;3、 存储过程输入参数为:。create function printInfor(cname varchar(50),sname varchar(20),score_before int,score_after int)returns nvarchar(max)asbegindeclare string nvarchar(max)set string=return stringenddrop proc addscorealter proc addscore(cname char(50),score_increase int)asbegindeclare cursor1 cursor for select sname,cname,score,(score+score_increase) as score_after from students,courses,choices where students.sid=choices.sid and courses.cid=choices.cid and choices.score60open cursor1declare ccname varchar(50)declare sname varchar(20)declare score_before intdeclare score_after intfetch next from cursor1 into sname,ccname,score_before,score_afterwhile(fetch_status =0)beginupdate choices set score=score_after where sid in (select sid from students as s where s.sname=sname) and cid in(select cid from courses as c where ame=ccname)if(score_after60)beginprint dbo.printInfor(ccname,sname,score_before,score_after)endfetch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论