sql游标的使用入门

游标的理解:

游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行,所以游标是定义在以Select开始的数据集上的

普通的sql语句是面向集合的,游标是面向行的。比如我们要取100条数据,通过普通的sql语句是一次取出所有行,而游标是一行一行取出的。

游标的缺点:

在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量

游标的定义:

游标变量支持两种方式赋值,定义时赋值和先定义后赋值,定义游标变量像定义其他局部变量一样,在游标前加”@”,注意,如果定义全局的游标,只支持定义时直接赋值,并且不能在游标名称前面加“@”,两种定义方式如下

--定义时赋值(支持全局变量)
declare myname cursor for
select * from T

--先定义,后赋值(不支持全局变量)
declare @myname cursor
set @myname=cursor for
select * from T

游标的参数:

FORWARD_ONLY(默认)--只能从数据集开始向数据集结束的方向读取,FETCH NEXT是唯一的选项;

SCROLL --支持游标在定义的数据集中向任何方向,或任何位置移动。

游标使用快速入门:

--定义游标
declare myname cursor for
select id,data from T

--打开游标
open myname

--定义需要的参数
declare @id int
declare @data varchar(50)

--获取下一行
fetch next from myname into @id,@data

--打印结果
print @id
print @str

--关闭游标
close myname

--释放游标
deallocate myname
时间: 2024-10-13 12:28:43

sql游标的使用入门的相关文章

SQL注入之SQLmap入门

什么是SQLmap? SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹.访问底层文件系统.执行命令). 读者可以通过位于SourceForge的官方网站下载SQLmap源码:http://sourceforge.net/projects/sqlmap/ SQLmap的作者是谁? Bernardo DameleAssumpcao Guimaraes (@inquisb),读者可以通过[email protected]与他取得联

用SQL游标解决经典的1+2+...+100的问题!

以前从来没接触过SQL游标,今天第一次学习,就想到了编程语言里经典的1+2+...+100的问题. 环境是SqlServer2008. 建表语句: CREATE TABLE [dbo].[tCursor]( [ID] [int] NOT NULL, [Sum] [int] NULL) ON [PRIMARY] 然后填充ID为1~100,Sum为0. declare @i int set @i=1 while(@i <=100) begin insert into tCursor (ID,[Sum

SQL 游标的应用

----------------SQL游标应用-----------------if object_id('tempdb..#test0001') is not null drop table #test0001---------物料临时表create table #test0001(ItemCode nvarchar(30)----物料代码 ,SL DEC(19,3)----物料所需数量 ,RowsID Bigint----用于循环物料 )if object_id('tempdb..#test

SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Server AlwaysON从入门到进阶(1)--何为AlwaysON? SQL Server AlwaysON从入门到进阶(2)--存储 SQL Server AlwaysON从入门到进阶(3)--基础架构 SQL Server AlwaysON从入门到进阶(4)--分析和部署Windows Ser

SQL Server AlwaysON从入门到进阶(2)——存储

本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程中对存储的利用建议.当然,重点还是集中在对于一个标准的AlwaysOn可用组配置过程中,对存储的选择和配置上面. AlwaysOn的部署首先建立在一个Windows Server Failover Cluster(WSFC)上.并且每个服务器通常有一个独立的SQL Server实例.另外,每个服务器

从一个小例子认识SQL游标

原文:从一个小例子认识SQL游标 1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理. 这些应用程序需要一种机制以便每次处理一行或一部分行. 游标就是提供这种机制的对结果集的一种扩展. 游标通过以下方式来扩展结果处理: 允许定位在结果集的特定行. 从结果集的当前位置检索一行或一

PL/SQL游标

PL/SQL游标:A:分类:1:隐式游标:非用户明确声明而产生的游标. 你根本看不到cursor这个关键字.2:显示游标:用户明确通过cursor关键字来声明的游标. B:什么是隐式游标:1:什么时候产生:会在执行任何合法的SQL语句(DML---INSERT UPDATE DELETE DQL-----SELECT)中产生.他不一定存放数据.也有可能存放记录集所影响的行数.如果执行SELECT语句,这个时候游标会存放数据.如果执行INSERT UPDATE DELETE会存放记录影响的行数.C

PL/SQL 游标详解

刚打开游标的时候,是位于一个空行,要用fetch into 才能到第一行.只是要注意用更新游标的时候,不能在游标期间commit. 否则会报ORA-01002: fetch out of sequence就是COMMIT导致的错误.在打开有for update的cursor时,系统会给取出的数据加上排他锁(exclusive), 这样在这个锁释放前其他用户不能对这些记录作update.delete和加锁.而我一旦执行了commit,锁就释放了,游标也变成无效的,再去fetch数据时就出现错误了.

PL/SQL游标使用

游标只是一个指向查询语句返回的结果的指针,因此在游标定义时将包含一个查询定义.当游标打开后,数据被接收到一块内存区域存储,直到游标关闭. 游标实际上指向的是一块内存区域,这块内存区域位于进程全局区内部,称为上下文区域,在上下文区域中包含如下3类信息 1.查询返回的数据行 2.查询所处理的数据的行号 3.指向共享池中的已分析的SQL语句 游标实际上指向一块内存区域 游标定义时并不会获取游标数据,只有在游标被打开后,游标相关的查询语句被执行,然后将检索到的结果保存到内存中. 游标结构示意图 游标指向