永发信息网

SQL中游标的使用

答案:1  悬赏:0  手机版
解决时间 2021-04-30 21:13
  • 提问者网友:寂寞梧桐
  • 2021-04-30 03:52

-- 在存储过程中使用游标修改字段的值
-- 演示:使用游标的过程

-- =============================================
-- 打开数据库
-- =============================================
USE Papala
GO

-- =============================================
-- 删除存储过程
-- =============================================
IF Object_ID('usp_UseCursor') IS NOT NULL
DROp PROCEDURE usp_UseCursor
GO

-- =============================================
-- 新建存储过程
-- =============================================
CREATE PROCEDURE usp_UseCursor
AS
-- 创建一个表SC_ADD,表结构与SC相同
IF Object_ID('SC_ADD') IS NOT NULL
DROP TABLE SC_ADD

-- 声明变量
DECLARE @Sno CHAr(5), @Cno CHAr(1), @Grade INT
SELECT * INTO SC_ADD FROM SC WHERe Sno=@Sno and Cno=@Cno
--1. 声明游标,与插入表相关联
DECLARE curTemp CURSOR FOR
SELECt Sno, Cno, Grade FROM SC
--2. 打开游标
OPEN curTemp
--3. 从游标中读取下一个记录
FETCH NEXT FROM curTemp INTO @Sno, @Cno, @Grade
--4. 根据全局变量@@FETCH_STATUS,
-- 判断是否从游标中取得了正确的数据值
WHILE @@FETCH_STATUS=0
BEGIN
--4.1 使用读进来的变量值,做任何事情
IF @Grade <= 60
INSERT INTO SC_ADD VALUES(@Sno, @Cno, @Grade + 20);
ELSE
IF @Grade <= 85
INSERT INTO SC_ADD VALUES(@Sno, @Cno, @Grade + 10);
ELSE
INSERT INTO SC_ADD VALUES(@Sno, @Cno, @Grade + 5);
--4.2 从游标中读取下一个记录
FETCH NEXT FROM curTemp INTO @Sno, @Cno, @Grade
END
--5. 关闭游标
CLOSE curTemp
--6. 释放游标所占资源
DEALLOCATE curTemp
GO

-- =============================================
-- 测试和运行存储过程
-- =============================================
-- 调用存储过程
EXECUTE usp_UseCursor
-- 显示两个数据表的内容
SELECt * FROM SC
SELECt * FROM SC_ADD
GO

最后的结果不是我想要,

改了好几个地方还是不行,

希望有人能指教一下!

最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-04-30 04:39

http://msdn.microsoft.com/zh-cn/library/ms190028.aspx



这里很详细,可以看一看


慢慢来,别着急,理解是需要过程的

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯