一、实验目的 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
四、实验总结

mysqlviewshavelimitations:1)他们不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinSorsubqueries.2)他们canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

porthusermanagementInmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)复杂的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

通过PHP网页界面添加MySQL用户可以使用MySQLi扩展。步骤如下:1.连接MySQL数据库,使用MySQLi扩展。2.创建用户,使用CREATEUSER语句,并使用PASSWORD()函数加密密码。3.防止SQL注入,使用mysqli_real_escape_string()函数处理用户输入。4.为新用户分配权限,使用GRANT语句。

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而alenosqloptionslikemongodb,redis和calablesolutionsoluntionsoluntionsoluntionsolundortionsolunsolunsstructureddata.blobobobsimplobissimplobisslowderperformandperformanceperformancewithlararengelitiate;

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollationsEttingsefectery.1)usecharforfixed lengengters lengengtings,varchar forbariaible lengength,varchariable length,andtext/blobforlabforlargerdata.2 seterters seterters seterters seterters


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中