当前位置:百问九>百科问答>sql 游标 是什么意思

sql 游标 是什么意思

2024-10-12 15:42:21 编辑:zane 浏览量:550

sql 游标 是什么意思

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

可理解为“游动的光标”(不一定准确)

当用一条SELECT 语句结果有一条或多条记录时,并对一条或多条记录做处理,此时指向当前记录的指针可理解为游标。

declare cr_cursor cursor --1.定义游标

for select name from dbo.sysobjects where xtype='U' and status>0

--?????? 这里是获取记录

fetch next From cr_cursor into @Table --??这里是用变量@Table保存获取到的select 【name】 from dbo.sysobjects where xtype='U' and status>0

name的值

fetch next From cr_cursor into @Table--这句话的完整意思是

将游标移动到下一条记录并将获取到是name值赋值给变量@Table

----------------------------------------------------------------------

给你一个例子 和说明 我看来几遍就学会游标了 下面是例子

---------------------------------------------------------------------

定义游标

Declare MyCursor Cursor For

Select Field1,Field2

From MyTable

Where (Field1 Like '%123%') And (Field2 = 'qqq') And (Field3 Is Not Null) And ......

Group By Field1,Field2

For Read Only

Open MyCursor

移动游标

fetch first from 游标 into 变量列表

取下一条

fetch next from 游标 into 变量列表

取第n条

fetch absolute n from 游标 into 变量列表

例子

日前,因工作需要累加某表里面的某字段的全部值,

比如有个表,内容如下

id,text

1,春花秋月何时了

2,往事知多少

3,小楼昨夜又春风

4,古国不堪回首月明中

......

其中id为系列号,text为文本内容,我想使用个sql语句,达到如下效果:

查询text列,查询的值累加,即查询结果显示如下:

春花秋月何时了 往事知多少 小楼昨夜又春风 古国不堪回首月明中 ...

用存储过程+游标实现,示例如下

ALTER PROCEDURE [dbo].[abc]

-- Add the parameters for the stored procedure here

@p1 int

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

declare @ttt varchar(100);

declare @bbb varchar(10);

set @ttt=''

set @bbb=''

declare mycur cursor for

select meno from test where gid= @p1

open mycur

fetch next from mycur into @bbb

WHILE @@FETCH_STATUS = 0

BEGIN

set @ttt=@ttt+@bbb

fetch next from mycur into @bbb

end

close mycur

select @ttt

版权声明:文章由 百问九 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwen9.com/answer/427326.html
热门文章
二维码