游标ISO Syntax
--1.FOR UPDATE ,更新不允许的列,出错,游标有 FOR UPDATE 列表,但请求更新的列不在此列表中
DECLARE mycursor CURSOR FOR SELECT * FROM aa1 FOR UPDATE OF 生成工号
--DECLARE mycursor CURSOR FOR SELECT * FROM aa1 FOR UPDATE
OPEN mycursor
FETCH NEXT FROM mycursor
UPDATE aa1
SET 户名 = '周杰伦2'
WHERE CURRENT OF mycursor ;
CLOSE mycursor
DEALLOCATE mycursor
--2.for read ONLY,游标是只读的。不可更新
DECLARE mycursor CURSOR FOR SELECT 费用ID,户名 FROM aa1 FOR READ ONLY
OPEN mycursor
FETCH NEXT FROM mycursor
UPDATE aa1
SET 户名 = '周杰伦2'
WHERE CURRENT OF mycursor ;
CLOSE mycursor
DEALLOCATE mycursor
--3.LAST,PRIOR,ABSOLUTE,RELATIVE,指定SCROLL 全部可用,不指定只能用next,出错如fetch: 提取类型 prior 不能与只进游标一起使用。
DECLARE vend_cursor SCROLL CURSOR FOR SELECT * FROM aa1
--DECLARE vend_cursor CURSOR FOR SELECT * FROM aa1
OPEN vend_cursor
FETCH LAST FROM vend_cursor
FETCH PRIOR FROM vend_cursor
FETCH ABSOLUTE 45 FROM vend_cursor
FETCH RELATIVE 2 FROM vend_cursor
CLOSE vend_cursor
DEALLOCATE vend_cursor
--4.INSENSITIVE关键字
/*
表明MS SQL SERVER 会将游标定义所选取出来的数据记录存放在一临时表内(建立在tempdb 数据库下)。
对该游标的读取操作皆由临时表来应答。因此,对基本表的修改并不影响游标提取的数据,
即游标不会随着基本表内容的改变而改变,同时也无法通过游标来更新基本表。
如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。
*/
--a.
DECLARE mycursor INSENSITIVE CURSOR FOR SELECT 户号,户名 FROM aa1
OPEN mycursor
FETCH NEXT FROM mycursor
/*
UPDATE aa1 SET 户名='刘德华' WHERE 户号=30
*/
CLOSE mycursor
DEALLOCATE mycursor
--fetch next的数据,open mycursor之后,update执行一次,到第五条数据,数据未改变
/*
户号 户名
30 周杰伦111
*/
-----------------------------------------------------------------
--b.
DECLARE mycursor CURSOR FOR SELECT 户号,户名 FROM aa1
OPEN mycursor
FETCH NEXT FROM mycursor
/*
UPDATE aa1 SET 户名='周杰伦12' WHERE 户号=30
*/
CLOSE mycursor
DEALLOCATE mycursor
--fetch next的数据,open mycursor之后,update执行一次,到第五条数据,发生改变
/*
户号 户名
30 周杰伦12
*/
--5.带变量
DECLARE mycursor CURSOR FOR SELECT 费用ID,户名 FROM aa1
OPEN mycursor
DECLARE @费用ID INT
DECLARE @户名 VARCHAR(60)
WHILE @@fetch_status = 0
BEGIN
FETCH NEXT FROM mycursor INTO @费用ID,@户名
SELECT CAST(@费用ID AS VARCHAR(60)) + ' ' + @户名
END
CLOSE mycursor
DEALLOCATE mycursor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器