DEALLOCATE
删除游标引用。当释放最后的游标引用时,组成该游标的数据结构由 Microsoft® SQL Server™ 释放。
语法
DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
参数
cursor_name
是已声明游标的名称。当全局和局部游标都以 cursor_name 作为它们的名称存在时,如果指定 GLOBAL,则 cursor_name 引用全局游标,如果未指定 GLOBAL,则 cursor_name 引用局部游标。
@cursor_variable_name
是 cursor 变量的名称。@cursor_variable_name 必须为 cursor 类型。
注释
对游标进行操作的语句使用游标名称或游标变量引用游标。DEALLOCATE 删除游标与游标名称或游标变量之间的关联。如果一个名称或变量是最后引用游标的名称或变量,则将释放游标,游标使用的任何资源也随之释放。用于保护提取隔离的滚动锁在 DEALLOCATE 上释放。用于保护更新(包括通过游标进行的定位更新)的事务锁一直到事务结束才释放。
DECLARE CURSOR 语句分配游标并使其与游标名称关联:
DECLARE abc SCROLL CURSOR FOR
SELECT * FROM authors
游标名称与某个游标关联之后,该游标在释放之前不能用作相同作用域(GLOBAL 或 LOCAL)内另一个游标的名称。
游标变量使用下列两种方法之一与游标关联:
通过名称,使用 SET 语句将游标设置为游标变量:
DECLARE @MyCrsrRef CURSOR
SET @MyCrsrRef = abc
也可以不定义游标名称而创建游标并使其与变量关联:
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM titles
DEALLOCATE @cursor_variable_name 语句只删除对游标命名变量的引用。直到批处理、存储过程或触发器结束时变量离开作用域,才释放变量。在 DEALLOCATE @cursor_variable_name 语句之后,可以使用 SET 语句使变量与另一个游标关联。
USE pubs
GO
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM titles
DEALLOCATE @MyCursor
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM sales
GO
不必显式释放游标变量。变量在离开作用域时被隐性释放。
权限
默认情况下,将 DEALLOCATE 权限授予任何有效用户。
示例
下面的脚本显示游标如何持续到最后的名称或持续到引用它们的变量已释放。
USE pubs
GO
-- Create and open a global named cursor that
-- is visible outside the batch.
DECLARE abc CURSOR GLOBAL SCROLL FOR
SELECT * FROM authors
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 titles
-- The following statement deallocates the cursor
-- because no other variables reference it.
DEALLOCATE @MyCursor
GO
分享到:
相关推荐
在SQL(Structured Query Language)中,循环语句主要用于执行重复性的任务,特别是在处理大量数据或者需要按步骤操作的时候。在数据库编程中,我们通常使用PL/SQL(Oracle)、T-SQL(Microsoft SQL Server)或存储...
从SQL数据库中导出图片这一过程涉及到了使用存储过程与扩展存储过程来实现对MSSQL数据库中的图片数据进行批量导出。以下是对这一过程的关键技术点进行详细解析。 ### 存储过程的设计思路 #### 创建存储过程 首先,...
在SQL Server中,遍历表中的记录是数据库操作中常见的一种任务,特别是在处理逐行处理数据或执行复杂逻辑时。本文将深入探讨两种方法:使用表变量和使用游标。 首先,我们来看如何通过表变量来遍历记录。表变量在...
在软件开发过程中,特别是在需要与数据库交互的应用场景中,嵌入式SQL(Structured Query Language)是一种非常重要的技术手段。它允许开发人员将SQL语句直接嵌入到高级编程语言(如C、C++等)的源代码中,以此来...
在SQL Server中,批量创建表是一项常见的数据库管理任务,尤其在构建数据库结构或者进行数据迁移时。本场景中,我们关注的是如何利用SQL Server 2008来实现这一目标。这里有两个关键文件:`SQL批量插入数据.sql` 和 ...
在SQL Server中,登录(Login)是连接到SQL Server实例的身份验证凭证。登录可以是Windows身份验证模式或混合模式(包含Windows和SQL Server身份验证)下的SQL Server身份验证。登录用于确定用户是否能够访问SQL ...
Sql Server 是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在实际开发和测试中,我们常常需要删除数据库中的所有表数据,而保持表结构不变。下面我们将介绍如何使用一条 Sql Server 语句删除当前数据库...
在SQL Server中,游标是一种重要的工具,它允许我们逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标提供了在结果集中向前或向后移动的能力,这在某些复杂的数据处理任务中非常有用。本篇文章将深入探讨SQL ...
### SQL 常用关键字解析 ...总结以上内容,我们介绍了 SQL 语言中的一些常用关键字,这些关键字对于进行有效的数据操作至关重要。了解和熟练掌握这些关键字及其用法,可以帮助开发者更高效地管理和操作数据。
在SQL Server中,有时我们需要找出特定值存在于哪个表的哪个字段中。这通常发生在数据维护、数据分析或数据迁移等场景中,特别是当数据库中有大量表时,手动检查变得非常困难且耗时。本文将详细介绍如何使用SQL ...
在 SQL Server 中,了解表空间(实际为文件组)的信息对于数据库管理员来说至关重要,它可以帮助我们更好地管理数据库的空间使用情况。在本例中,作者提供了一个存储过程来查询每个用户定义表的空间使用情况。 ####...
根据提供的信息,我们可以详细解析如何在SQL Server 2005中实现批量导出照片的功能。此过程涉及到了SQL查询、游标(Cursor)的使用以及系统存储过程`xp_cmdshell`来执行文件操作。 ### SQL Server 2005 批量导出...
在 SQL Server 中,游标是一种用于处理结果集中的数据行的一种机制。它允许开发人员逐行访问查询的结果,这对于需要对每一条记录进行特定操作的场景非常有用。 **1.1 游标的基本语法** 在 SQL Server 中定义并使用...
### SQL编程中的游标的使用方法 #### 一、游标的基本概念 在SQL编程中,游标是一种数据库对象,它允许程序逐行处理查询结果集中的数据,这与一般的SQL语句一次处理整个结果集不同。游标可以用于实现复杂的业务逻辑...
在本文中,我们将详细介绍 SQL Server 遍历所有表数据库命令的实现方法和原理。本文将分为三个部分,分别介绍 SQL Server 的系统表和视图、游标的使用和存储过程的应用。 系统表和视图 在 SQL Server 中,有许多...
SQL Server中的自定义函数是数据库开发中非常重要的组成部分,它们允许开发者创建自定义的逻辑,以便在查询中重用和简化复杂操作。本篇主要关注SQL Server 2008中的三种自定义函数:标量函数、内联表值函数和多语句...
在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并指导如何进行有效的转换。 #### 一、基本语法...
在SQL编程中,游标(Cursor)是一种非常重要的工具,它允许我们按需逐行处理结果集,这对于处理批量数据或者进行复杂的数据操作至关重要。游标对于初学者来说可能有些抽象,但一旦掌握了其基本使用方法,就能在很多...
在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。游标常用于需要对数据进行迭代处理的情况,例如更新或...