首页
统计
留言
友链
壁纸
Search
1
Notion网页端汉化、主题修改
709 阅读
2
SnapicPlus主题添加视频功能以及使用外链详解、图片加载缓慢问题解决
551 阅读
3
Gravatar镜像源地址大全
538 阅读
4
typecho主题中文搜索404问题解决
510 阅读
5
Notion客户端中文安装
444 阅读
Web前端
ES6
Vue.js
Node.js
JavaScript
其他前端扩展
后端探索
数据库
服务器
小程序
手机端
奇技淫巧
成功之母
时光随笔
登录
Search
标签搜索
SQL
typecho
SqlServer
MySql
jQuery
JavaScript
npm
Gravatar
镜像
google
Java
包管理工具
前端
JS
node
数据库
Notion
BEGIN...END
EXECUTE
404
天祈
累计撰写
66
篇文章
累计收到
14
条评论
首页
栏目
Web前端
ES6
Vue.js
Node.js
JavaScript
其他前端扩展
后端探索
数据库
服务器
小程序
手机端
奇技淫巧
成功之母
时光随笔
页面
统计
留言
友链
壁纸
搜索到
1
篇与
的结果
2022-11-12
14. SQLServer : 游标学习
CLOSE{callout color="#f4ddbd"}释放当前结果集,然后解除定位游标的行上的游标锁定,从而关闭一个开放的游标。 CLOSE 将保留数据结构以便重新打开,但在重新打开游标之前,不允许提取和定位更新。 必须对打开的游标发布 CLOSE;不允许对仅声明或已关闭的游标执行 CLOSE。{/callout}{alert type="info"}DECLARE Employee_Cursor CURSOR FOR SELECT EmployeeID, Title FROM AdventureWorks2012.HumanResources.Employee; OPEN Employee_Cursor; FETCH NEXT FROM Employee_Cursor; WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Employee_Cursor; END; CLOSE Employee_Cursor; DEALLOCATE Employee_Cursor; GO {/alert}DEALLOCATE{callout color="#91ec7e"}删除游标引用。 当释放最后的游标引用时,组成该游标的数据结构由 Microsoft SQL Server 释放。DEALLOCATE <@cursor_variable_name> 语句只删除对游标命名变量的引用。 直到批处理、存储过程或触发器结束时变量离开作用域,才释放变量。 在 DEALLOCATE <@cursor_variable_name> 语句之后,可以使用 SET 语句将变量与另一个游标关联。{/callout}{alert type="info"}-- DECLARE CURSOR 语句分配游标并将其与游标名称关联 DECLARE abc SCROLL CURSOR FOR SELECT * FROM Person.Person; -- 将游标设置为游标变量 DECLARE @MyCrsrRef CURSOR; SET @MyCrsrRef = abc; -- 不定义游标名称而创建游标并将其与变量关联 DECLARE @MyCursor CURSOR; SET @MyCursor = CURSOR LOCAL SCROLL FOR SELECT * FROM Person.Person; -- 示例 DECLARE @MyCursor CURSOR; SET @MyCursor = CURSOR LOCAL SCROLL FOR SELECT * FROM Sales.SalesPerson; DEALLOCATE @MyCursor; SET @MyCursor = CURSOR LOCAL SCROLL FOR SELECT * FROM Sales.SalesTerritory; GO -- 以下脚本显示游标如何持续到最后的名称或持续到引用它们的变量已释放 DECLARE abc CURSOR GLOBAL SCROLL FOR SELECT * FROM Sales.SalesPerson; OPEN abc; GO -- Reference the named cursor with a cursor variable. DECLARE @MyCrsrRef1 CURSOR; SET @MyCrsrRef1 = abc; -- Now deallocate the cursor reference. DEALLOCATE @MyCrsrRef1; -- Cursor abc still exists. FETCH NEXT FROM abc; GO -- Reference the named cursor again. DECLARE @MyCrsrRef2 CURSOR; SET @MyCrsrRef2 = abc; -- Now deallocate cursor name abc. DEALLOCATE abc; -- Cursor still exists, referenced by @MyCrsrRef2. FETCH NEXT FROM @MyCrsrRef2; -- Cursor finally is deallocated when last referencing -- variable goes out of scope at the end of the batch. GO -- Create an unnamed cursor. DECLARE @MyCursor CURSOR; SET @MyCursor = CURSOR LOCAL SCROLL FOR SELECT * FROM Sales.SalesTerritory; -- The following statement deallocates the cursor -- because no other variables reference it. DEALLOCATE @MyCursor; {/alert}DECLARE CURSOR{alert type="info"}ISO Syntax DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ] [;] Transact-SQL Extended Syntax DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ] [;] cursor_name : 游标的名称LOCAL : 指定该游标的范围对在其中创建它的批处理、存储过程或触发器是局部的GLOBAL : 指定该游标范围对连接是全局的。 在由此连接执行的任何存储过程或批处理中,都可以引用该游标名称。 该游标仅在断开连接时隐式释放。FORWARD_ONLY : 指定游标只能向前移动,并从第一行滚动到最后一行。STATIC : 指定游标始终以第一次打开时的样式显示结果集,并制作数据的临时副本,供游标使用。KEYSET : 指定当游标打开时,游标中行的成员身份和顺序已经固定。....{/alert}示例使用简单的游标和语法{callout color="#9483e7"}在打开该游标时所生成的结果集包括表中的所有行和所有列。 可以更新该游标,并且所有的更新和删除都会在对该游标所做的提取操作中表现出来。 FETCH NEXT 是唯一可用的提取选项,因为未指定 SCROLL 选项{/callout}{alert type="info"}DECLARE vend_cursor CURSOR FOR SELECT * FROM Purchasing.Vendor OPEN vend_cursor FETCH NEXT FROM vend_cursor; {/alert}
2022年11月12日
143 阅读
0 评论
0 点赞