游标
一、实验目的 1、掌握创建游标的方法和步骤; 2.掌握游标的使用方法; 二、实验内容 1、游标的创建; 2、游标的使用方法。 三、实验步骤 1、游标的创建。 1)使用S_C数据库中的S表、C表、SC表创建一个存储过程sp_CURSOR1。该存储过程的作用是:显示所有的课
一、实验目的
1、掌握创建游标的方法和步骤;
2.掌握游标的使用方法;
二、实验内容
1、游标的创建;
2、游标的使用方法。
三、实验步骤
1、游标的创建。
1)使用S_C数据库中的S表、C表、SC表创建一个存储过程—sp_CURSOR1。该存储过程的作用是:显示所有的课程信息,如果成绩>=90显示成绩本身;成绩>=80显示良;成绩>=70显示中;成绩>=60显示及格;成绩>=0显示不及格;如果没有成绩则显示无成绩。信息还包含学号,姓名,课程和成绩,显示格式如下:学号---姓名---课程---成绩,如图1所示。
要求使用游标技术实现上述要求,使用Print语句实现显示。
图1 成绩显示格式
sp_CURSOR1的创建语句:
IF EXISTS(SELECT name FROM sysobjects WHERE name = 'sp_CURSOR1' AND type = 'P')
DROP PROCEDURE sp_CURSOR1
GO
CREATE PROCEDURE sp_CURSOR1
AS
BEGIN
DECLARE @sno char(10)
DECLARE @name char(10)
DECLARE @cno char(10)
DECLARE @grade int
DECLARE S_CURSOR CURSOR
FOR
SELECT S.sno, S.sname, C.cname, SC.grade FROM SC, S, C
WHERE S.sno = SC.sno AND SC.cno = C.cno
OPEN S_CURSOR
FETCH NEXT FROM S_CURSOR INTO @sno, @name, @cno, @grade
WHILE @@FETCH_STATUS = 0
BEGIN
IF @grade IS NULL
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---无成绩'
ELSE IF @grade >= 90
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---'+CONVERT(VARCHAR(20), @grade)
ELSE IF @grade >= 80
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---良'
ELSE IF @grade >= 70
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---中'
ELSE IF @grade >= 60
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---及格'
ELSE IF @grade >= 0
PRINT RTRIM(@sno) +'---'+ RTRIM(@name) +'---'+ RTRIM(@cno) +'---不及格'
FETCH NEXT FROM S_CURSOR INTO @sno, @name, @cno, @grade
END
CLOSE S_CURSOR
DEALLOCATE S_CURSOR
END
结果描述:
2、游标的使用。
计算银行利息。有一储户账号为0001,银行存取记录如下:
交易日期 |
交易金额 |
账户余额 |
备注 |
2010-10-01 |
10000 |
10000 |
开户存入 |
2010-12-20 |
20000 |
30000 |
|
2011-02-03 |
-5000 |
25000 |
|
2011-05-01 |
-3000 |
22000 |
|
2011-10-10 |
6000 |
28000 |
|
存取记录数据表名为fundlist,字段名为id(编号,int),cid(储户账号,varchar(20)),ex-date(交易日期,datetime),ex-money(交易金额,money),balance(账户余额,money)。根据有关规定,银行存款利息为:2011-04-01号之前(包括)为年利息2%,之后(不包括)为年利息3%,请用编写一个存储过程sp_cal_interest用来计算该储户的当前利息,要求利用游标实现。说明:当前用getdate()表示,年利息2%用存入的天数*2%/365表示利息。
IF EXISTS(SELECT name FROM sysobjects WHERE name = 'sp_cal_interest' AND type = 'P')
DROP PROCEDURE sp_cal_interest
GO
CREATE PROCEDURE sp_cal_interest
AS
DECLARE @time datetime
DECLARE @money money
DECLARE @pretime datetime
DECLARE @all money
DECLARE @lixi money
DECLARE @T datetime
BEGIN
SET @T = CAST('2011-04-01' AS datetime)
DECLARE f_cursor CURSOR FOR
SELECT ex_date, balance FROM fundlist
OPEN f_cursor
FETCH NEXT FROM f_cursor INTO @time, @money
SET @pretime = @time
SET @all = @money
WHILE @@FETCH_STATUS = 0
BEGIN
IF @time
SET @lixi = @all*DATEDIFF(DAY, @pretime, @time)*0.02/365
ELSE IF @time > @T AND @pretime
SET @lixi = @all*DATEDIFF(DAY, @pretime, @T)*0.02/365
+@all*DATEDIFF(DAY, @T, @time)*0.03/365
ELSE
SET @lixi = @all*DATEDIFF(DAY, @pretime, @time)*0.03/365
SET @all = @all+@lixi+@money
SET @pretime = @time
FETCH NEXT FROM f_cursor INTO @time, @money
END
PRINT @lixi
CLOSE f_cursor
DEALLOCATE f_cursor
END
四、实验总结

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to make Google Maps the default map in iPhone

This Apple ID is not yet in use in the iTunes Store: Fix

Steps to upgrade to the latest version of WeChat (Easily master the upgrade method to the latest version of WeChat)

How to write a novel in the Tomato Free Novel app. Share the tutorial on how to write a novel in Tomato Novel.

How to recover deleted contacts on WeChat (simple tutorial tells you how to recover deleted contacts)

Safari zoom issue on iPhone: Here's the fix

Shazam app not working in iPhone: Fix

iPhone screenshots not working: How to fix it
