资源描述:
《数据库游标实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库实验报告计算机系一、实验目的1、掌握创建游标的方法和步骤;2.掌握游标的使用方法;二、实验内容1、游标的创建;2、游标的使用方法。三、实验步骤1、游标的创建。1)使用S_C数据库中的S表、C表、SC表创建一个存储过程—sp_CURSOR1。该存储过程的作用是:显示所有的课程信息,如果成绩>=90显示成绩本身;成绩>=80显示良;成绩>=70显示中;成绩>=60显示及格;成绩>=0显示不及格;如果没有成绩则显示无成绩。信息还包含学号,姓名,课程和成绩,显示格式如下:学号---姓名---课程---成
2、绩,如图1所示。要求使用游标技术实现上述要求,使用Print语句实现显示。图1成绩显示格式sp_CURSOR1的创建语句:createprocsp_CURSOR1asDeclare@snamevarchar(50)Declare@snovarchar(20)Declare@cnovarchar(20)Declare@cnamevarchar(20)Declare@gradevarchar(20)DeclareSCursorCursorForSelectsno,cno,gradeFromSCOpenSC
3、ursorFetchNextFromSCursorInto@sno,@cno,@gradeWhile@@FETCH_STATUS=0beginselect@sname=snameFromSwheresno=@snoselect@cname=cnameFromCwherecno=@cnoif(@grade='')Print@sno+@sname+@cname+'null'-2-数据库实验报告elseif(@grade>=90)Print@sno+@sname+@cname+@gradeelseif(@g
4、rade>=80)Print@sno+@sname+@cname+'良'elseif(@grade>=70)Print@sno+@sname+@cname+'中'elseif(@grade>=60)Print@sno+@sname+@cname+'及格'elsePrint@sno+@sname+@cname+'不及格'FetchNextFromSCursorInto@sno,@cno,@gradeEndCloseSCursorDeallocateScursorgo结果描述:2、游标的使用。计算银行利息
5、。有一储户账号为0001,银行存取记录如下:交易日期交易金额账户余额备注2010-10-011000010000开户存入2010-12-2020000300002011-02-03-5000250002011-05-01-3000220002011-10-10600028000存取记录数据表名为fundlist,字段名为id(编号,int),cid(储户账号,varchar(20)),ex-date(交易日期,datetime),ex-money(交易金额,money),balance(账户余额,mo
6、ney)。根据有关规定,银行存款利息为:2011-04-01号之前(包括)为年利息2%,之后(不包括)为年利息3%,请用编写一个存储过程sp_cal_interest用来计算该储户的当前利息,要求利用游标实现。说明:当前用getdate()表示,年利息2%用存入的天数*2%/365表示利息。createprocsp_cal_interestasDeclare@idintDeclare@cidvarchar(20)Declare@ex_datedatetimeDeclare@ex_moneymoneyD
7、eclare@balancemoneyDeclare@pre_ex_datedatetimeDeclare@pre_balancemoneyDeclare@resultmoney-2-数据库实验报告DeclareSCursorCursorForSelectid,cid,ex_date,ex_money,balanceFromfundlistOpenSCursorFetchNextFromSCursorInto@id,@cid,@ex_date,@ex_money,@balanceset@pre_ex_
8、date=@ex_dateset@pre_balance=@balanceset@result=0While@@FETCH_STATUS=0beginset@pre_balance=@pre_balance+@resultif(@ex_date<=Cast('2011-04-01'asdatetime))beginset@result=@pre_balance*(datediff(day,@pre_ex_date,@ex_date))*2/36500en