实验报告数据库编程.doc_第1页
实验报告数据库编程.doc_第2页
实验报告数据库编程.doc_第3页
实验报告数据库编程.doc_第4页
实验报告数据库编程.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验报告六(1)课程名称数据库系统原理与应用实验日期11.21(计科1301ZB)11.28(计科1101B)实验项目名称数据库编程(1)实验地点1#609实验类型验证型 设计型综合型 学 时2一、实验目的及要求(本实验所涉及并要求掌握的知识点)1、 掌握流程控制语句的使用。2、 掌握游标、存储过程的定义和使用二、实验环境(本实验所使用的硬件设备和相关软件)硬件:微型计算机软件:Windows XP操作系统;SQL Server2005数据库管理系统;Eclipse三、实验内容及步骤一、流程控制语句:1、BEGINEND包括一系列的Transact-SQL语句,从而可以执行一组Transact-SQL语句。语法如下:BEGIN sql_statement END参数含义如下。sql_statement 使用语句块定义的任何有效的Transact-SQL语句或语句组。2、IFELSE指定Transact-SQL语句的执行条件。 语法如下:IF 逻辑表达式 sql_statement ELSEsql_statement 3、WHILE设置重复执行SQL语句或语句块的条件。 语法如下:WHILE 逻辑表达式 sql_statement 4、BREAK与CONTINUE可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。 BREAK用于退出最内层的WHILE循环;CONTINUE用于重新开始下一次WHILE循环,在CONTINUE关键字之后的语句都不会被执行,而是跳转到循环开始的地方继续执行。5、流程控制语句举例:求100以内的奇数之和declare num int,sum intset num=0set sum=0while num100begin set num=num+1if num%2=0 continueelseset sum=sum+numendprint sum6、WAITFOR语法格式:WaitFor Delay time |time time 例1:首先显示学生表的信息,延时10秒钟后再显示课程表的信息use MyDBgoselect * from studentgowaitfor delay 00:00:10go select * from courseGo例2、在早上八点执行存储过程 myproBeginWaitfor time 8:00Exec myproEnd 7、GoTo GOTO语句将一个批的执行转到另一个有标号的语句。跳过GOTO后面的Transact-SQL语句,并从标号位置继续处理。例:使用以下语句重新计算从1 加到100 的值。DECLARE Result int ,n intSET n=0SET Result=0Loop_1: /*定义标号*/SET Result=Result+nSET n=n+1IF n89 then 优秀 when grade79 and grade69 and grade 59 and grade 70 then 及格 else 不及格end As 成绩级别from student,course,scwhere student.sno=sc.snoand o=oand sname=李勇【任务1】1、求10!。2、从st数据库中查询所有学生选课成绩情况,包括如下信息:姓名、课程名、成绩。要求:凡是成绩为空者输出:“未考”、小于60分的输出“不及格”;6070分的输出“及格”;7080分的输出“中”;8090分的输出“良好”;90100分的输出“优秀”。并且输出记录按下列要求排序:先按学号升序,再按课程号升序,最后按成绩降序排序。二、游标 一个对表进行操作的T_SQL语句通常都可产生或处理一组记录,但是许多应用程序,通常不能把整个结果集作为一个单元来处理,这些应用程序就需要一种机制来保证每次处理结果集中的一行或几行,游标就提供了这种机制。Sql Server通过游标提供了对一个结果集进行逐行处理的能力,游标可看作一种特殊的指针,她与某个查询结果相联系,可以指向结果集的任意位置,以便对指定位置的数据进行处理。使用游标可以在查询数据的同时对数据进行处理。每一个游标必须有四个组成部分这四个关键部分必须符合下面的顺序;1. 声明游标 (DECLARE 游标 )2.打开游标 (OPEN 游标)3.读取游标中数据(从一个游标中FETCH 信息)4.关闭或删除游标(CLOSE 或DEALLOCATE 游标)(1)声明游标其语法格式如下:DECLARE cursor_name CURSORSCROLLFOR select_statementFOR READ ONLY | UPDATE OF column_name ,.n其中:cursor_name指游标的名字。 SCROLL表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。由此可见,SCROLL 极大地增加了提取数据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再重开游标。 select_statement是定义结果集的SELECT 语句。UPDATE OF column_name,n定义在游标中可被修改的列,如果不指出要更新的列,那么所有的列都将被更新。(2)打开游标声明游标后,要使用游标从中提取数据,就必须先打开游标。使用open语句打开游标。其格式为:Open 游标名打开游标后,可以使用全局变量CURSOR_ROWS查看游标中数据行的数目。(3)读取数据。其格式为:Fetch next|prior|first|last|absolute n |relativ nFrom 游标名Into 变量列表说明:next|prior|first|last|absolute n |relativ n:用于说明读取数据的位置。Next说明读取当前行的下一行,并且使其为当前行。Prior说明读取当前行的前一行,并且使其为当前行。Absolute n 如果n为正数,则读取从游标头开始的第n行,并将读取的行变成新的当前行。如果n为负数,则读取游标尾之前的第n行,并将读取的行变成新的当前行。如果n为0,则没有返回行。Ralative n如果n为正数,则读取当前行之后的第n行,并将读取的行变成新的当前行。如果n为负数,则当前行之前的第n行,并将读取的行变成新的当前行。如果n为0,则读取当前行。(4)关闭游标游标使用完毕后要及时关闭。关闭游标用Close 其格式为:Close 游标名(5)删除游标游标关闭后,其定义仍在,需要时可用open语句打开它再使用。若确认游标不再需要,就要释放其定义占用的系统空间,即删除游标。删除游标用Deallocate语句。其格式为:Deallocate 游标名。(6)和游标相关的函数FETCH_STATUS 返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态。返回类型 integer 返回值如下表:返回值 说明 0FETCH 语句成功。-1FETCH 语句失败或行不在结果集中。-2提取的行不存在。CURSOR_ROWS全局变量CURSOR_ROWS中保存着最后打开的游标中的数据行数。当其值为0时,表示没有游标打开;当其值为m(m为正整数)时,m时游标中的数据行数。例1定义一个只可向前读取数据的游标定义declare myfirstcursor cursorforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=o打开open myfirstcursorgo读取fetch next from myfirstcursorGo关闭游标close myfirstcursor删除游标deallocate myfirstcursor例2定义一个可以向任意位置读取数据的游标declare mysecondcursor cursorscrollforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=o打开open mysecondcursorgo读取fetch next from mysecondcursorGo按绝对位置读取fetch absolute 3 from mysecondcursor按相对位置读取fetch relative -2 from mysecondcursor读取最后一条记录fetch last from mysecondcursorgo关闭游标close mysecondcursor删除游标deallocate mysecondcursor例3定义一个可以向任意位置读取数据的游标,利用游标逐个读取数据定义declare mythirdcursor cursorscrollforselect sname,cname,gradefrom student,course,scwhere student.sno=sc.snoand o=ogo打开Open mythirdcursorgo读取fetch first from mythirdcursorgowhile fetch_status-1 fetch next from mythirdcursor关闭Close mythirdcursor删除Deallocate mythirdcursor【任务2】在st数据库中完成以下作业(1)利用游标查找所有计科系的学生信息(2)定义可以向任意位置读取数据的游标,显示学生姓名、选修的门数、和平均成绩。并顺序逐个读取其中的数据。然后分别显示第3条记录,第1条记录和最后1条记录。(3)创建一游标,逐行显示Student表中的记录,要求按学号+-+姓名+-+性别+-+所在系格式输出。三、存储过程存储过程类似一个函数定义存储过程的语法(详细语法可以参考SQL Server联机丛书) CREATE PROCEDURE 存储过程名 参数1 数据类型 = 默认值 OUTPUT, , 参数n 数据类型 = 默认值 OUTPUT AS SQL语句 GO和C语言的函数一样,参数可选参数分为输入参数、输出参数 输入参数允许有默认值 设计1(无默认值 无输出型)CREATE PROCEDURE proc_stu testgrade int -成绩 AS print 查询成绩高于给定成绩的学生成绩信息SELECT sname 学生姓名,cname 课程名,grade 成绩from Student,course,scwhere student.sno=sc.snoand o=oand gradetestgrade GO调用 exec proc_stu 80设计2(有默认值 有输出型)CREATE PROCEDURE proc_stu1count int OUTPUT, sdept char(2)=cs ASSELECT sdept 所在系FROM studentWhere sdept=sdeptGroup by sdept SELECT count=count(*)FROM studentWhere sdept=sdeptGroup by sde

温馨提示

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

评论

0/150

提交评论