当前位置:首页 » 编程语言 » sql2000游标
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql2000游标

发布时间: 2022-06-14 06:33:20

sql Server 中游标是什么

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

Ⅱ SQL游标怎么用

例子
table1结构如下
id int
name varchar(50)

declare @id int
declare @name varchar(50)
declare cursor1 cursor for --定义游标cursor1
select * from table1 --使用游标的对象(跟据需要填入select文)
open cursor1 --打开游标

fetch next from cursor1 into @id,@name --将游标向下移1行,获取的数据放入之前定义的变量@id,@name中

while @@fetch_status=0 --判断是否成功获取数据
begin
update table1 set name=name+'1'
where id=@id --进行相应处理(跟据需要填入SQL文)

fetch next from cursor1 into @id,@name --将游标向下移1行
end

close cursor1 --关闭游标
deallocate cursor1

数据库中游标的作用是什么

游标在处理数据中提供了在结果集中一次一行或者多行前进或向后浏览数据的能力,可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。

有了游标,用户就可以访问结果集中任意一行数据,在将游标放置到某行之后,可以在该行或从该位置的行块上执行操作。

(3)sql2000游标扩展阅读

游标的类型

MS SQL SERVER 支持三种类型的游标:Transact_SQL 游标,API服务器游标和客户游标。

1、Transact_SQL 游标

Transact_SQL 游标由DECLARE CURSOR 语法定义、主要用在Transact_SQL脚本存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理、存储过程、触发器中的Transact_SQL 进行管理。

2、API游标

API 游标支持在OLE DB, ODBC 以及DB_library 中使用游标函数,主要用在服务器上。每一次客户端应用程序调用API 游标函数,MS SQL SEVER 的OLE DB 提供者、ODBC驱动器或DB_library 的动态链接库都会将这些客户请求传送给服务器以对API游标进行处理。

3、客户游标

客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于API 游标和Transact-SQL 游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。

Ⅳ SQL Server2000游标循环,如何修改,可使两条fetch语句变成一条

首先说明,楼主读取游标的写法是正确规范的写法,效率应该也是最高的,不明白为什么非要只让fetch出现一次。

如果非要这样,可以按这个思路,在定义游标之后,再统计出此游标将会查询出的记录总数,然后定义变量,在循环中使变量增1,超过游标记录总数后,循环中止。具体代码如下:

CREATE PROCEDURE PROC_comp @Now_Date smalldatetime AS
declare @Pre_Sum_Amount numeric(18,2),@Now_Amount numeric(18,2),@Now_Sum_Amount numeric(18,2)
--搜寻前一条记录的累计金额(注意参数top 1及desc,表示倒序排列并取第一条)。
select top 1 @Pre_Sum_Amount=累计金额 from 报表2009
where 日期<@Now_Date and 日期>='2009-10-1' order by 日期 desc
set @Pre_Sum_Amount=isnull(@Pre_Sum_Amount,0)
--建立游标,计算本条记录的累计金额,并依次向后,计算出后续各条记录的累计金额。
declare cur_Accumulate cursor dynamic for
select 金额,累计金额 from 报表2009 where 日期>='2009-10-1' and 日期<='2009-10-31'
declare @t as integer,@n as integer
set @n=1
select @t=count(1) from 报表2009 where 日期>='2009-10-1' and 日期<='2009-10-31'
open cur_Accumulate
while(@n<=@t)
begin
fetch next from cur_Accumulate into @Now_Amount,@Now_Sum_Amount
set @Now_Sum_Amount=@Pre_Sum_Amount+isnull(@Now_Amount,0)
update 报表2009 set 累计金额=@Now_Sum_Amount where current of cur_Accumulate
set @Pre_Sum_Amount=@Now_Sum_Amount
set @n=@n+1
end
close cur_Accumulate
deallocate cur_Accumulate

Ⅳ 关于SQL 2000游标的问题

while
@@fetch_status
=
0
begin
print
@sd1
+
'
'
+
@sn1
+
'
'
+
cast(@sg1
as
char(2))
--上面这些你明白
--提取一下个游标记录存放到
@sd2.....

fetch
next
from
cur_sage
into
@sd2,
@sn2,
@sg2
--打印出来,cast
表示类型转换
print
@sd2
+
'
'
+
@sn2
+
'
'
+
cast(@sg2
as
char(2))
--判断两个人是否为一个系
and
判断@@fetch_status状态成为0的话
0
--的话
代表成功
-1的话代表不成功
while
@sd1
=
@sd2
and
@@fetch_status
=
0
--当上面的条件成立将提取下一个游标记录继续和@sd1比较,
--直到下条记录学生所在系不同或者游标位置为最后一行后面
fetch
next
from
cur_sage
into
@sd2,
@sn2,
@sg2
--判断状态
if
@@fetch_status
=
0
--如果为0,将第二个学生的数据赋给第一个,然后在回到第一个while循
--环,继续判断,不过这个程序我也不知道它想做什么,迷糊...
begin
set
@sd1
=
@sd2
set
@sn1
=
@sn2
set
@sg1
=
@sg2
end
end
--关闭游标
close
cur_sage
--清除游标
deallocate
cur_sage

Ⅵ Sql Server 2000 中 如何应用游标用游标有什么优缺点

http://hi..com/wangqing999/blog/item/49b9c7280c4963e28b139970.html
SQL Server 游标处理例子.

用游标优点:
某些复杂的业务,简单的一句SQL无法处理的,可以用游标处理。
缺点:
如果游标 嵌套游标的处理, 运行效率比较低。

Ⅶ SQL2000 在WHILE循环加入游标循环 提示:名为 'tnames_cursor' 的游标已存在。

CLOSE tnames_cursor
关闭之后要释放,就是删除
DEALLOCATE tnames_cursor --释放游标

Ⅷ sql 游标是什么东西

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

Ⅸ Sql中的游标是干嘛的

游标(cursor)是结果集的逻辑扩展,可以看做指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。

ResultSet对象用于接收查询结果,next()方法用于判断结果集是否为空,相当于指针,指向结果集下一个数据。

(9)sql2000游标扩展阅读:

游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。

1、声明游标语法

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 ] ] ]

2、打开游标语法

open [ Global ] cursor_name | cursor_variable_name

3、读取游标数据语法

Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]

4、关闭游标语法

close [ Global ] cursor_name | cursor_variable_name

5、释放游标语法

deallocate cursor_name

Ⅹ sql 2000游标的问题

楼上的胡说写什么啊,楼主要的是显示内容的问题,你给人家回答一个修改的问题,
select case when 姓名 like '王%' then '该同学姓为:'+left(姓名,1)+',名为'+right(姓名,len(姓名)-1) else 姓名 end as 姓名 from 借书证表

用这个方法就行了,这个问题不用游标,游标的执行效率很低的

以上,希望对你有所帮助!