游标的作用是什么? 用自己的话回答号码?
在存储过程中,游标的作用是逐一返回我们需要返回的数据,并且进行逐一的处理,谁能给我举个例子吗?...
在存储过程中,游标的作用是逐一返回我们需要返回的数据,并且进行逐一的处理,谁能给我举个例子吗?
展开
展开全部
用自己的话啊
就是循环对一组数据进行操作的时候的一种手段
ps:游标的效率向来是受争议的,建议1000条以上的数据循环操作时尽量避免使用
--以下为例子
--声明变量
DECLARE @vendor_id int, @vendor_name nvarchar(50),
@message varchar(80), @product nvarchar(50)
--声明游标,select的结果就会放在游标中了
DECLARE vendor_cursor CURSOR FOR
SELECT VendorID, Name
FROM Purchasing.Vendor
WHERE PreferredVendorStatus = 1
ORDER BY VendorID
--打开游标
OPEN vendor_cursor
--取下一条数据,因为游标打开以后,默认的指针是在第一条前面的
--这个语句的意思是把第一条记录中的数据拿出来,并赋值给之前声明的变量
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
--如果取数据成功,则....
--这里的while是一个循环,用来遍历整个游标
WHILE @@FETCH_STATUS = 0
BEGIN
--这个地方就是写处理过程的,这里只是些了几个无关紧要的语句
PRINT ' '
SELECT @message = '----- Products From Vendor: ' + @vendor_name
PRINT @message
--取下一条
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
END
--关闭并释放游标
CLOSE vendor_cursor
DEALLOCATE vendor_cursor
再次PS:其实这个是联机帮助里的例子,注释是我加的,楼主学习sql server可以多看联机帮助,那个是不错的学习资料
就是循环对一组数据进行操作的时候的一种手段
ps:游标的效率向来是受争议的,建议1000条以上的数据循环操作时尽量避免使用
--以下为例子
--声明变量
DECLARE @vendor_id int, @vendor_name nvarchar(50),
@message varchar(80), @product nvarchar(50)
--声明游标,select的结果就会放在游标中了
DECLARE vendor_cursor CURSOR FOR
SELECT VendorID, Name
FROM Purchasing.Vendor
WHERE PreferredVendorStatus = 1
ORDER BY VendorID
--打开游标
OPEN vendor_cursor
--取下一条数据,因为游标打开以后,默认的指针是在第一条前面的
--这个语句的意思是把第一条记录中的数据拿出来,并赋值给之前声明的变量
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
--如果取数据成功,则....
--这里的while是一个循环,用来遍历整个游标
WHILE @@FETCH_STATUS = 0
BEGIN
--这个地方就是写处理过程的,这里只是些了几个无关紧要的语句
PRINT ' '
SELECT @message = '----- Products From Vendor: ' + @vendor_name
PRINT @message
--取下一条
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
END
--关闭并释放游标
CLOSE vendor_cursor
DEALLOCATE vendor_cursor
再次PS:其实这个是联机帮助里的例子,注释是我加的,楼主学习sql server可以多看联机帮助,那个是不错的学习资料
展开全部
我的理解:游标作用,其实和循环差不多,就是你把数据放在游标里面,然后使用游标一行一行的取得数据。最终达到循环处理数据的目的。
比如(鉴于你不是很理解,就给你弄个最简单的吧)
--创建一个游标
cursor cur1 is
select * from table where group by ..
begin
--遍历 游标 其中 rec 是游标的当前行数据
for rec in cur_1 loop
--根据rec 数据更新一个表
update tabel set row1= rec.rown, row2 =rec.row2
where id=rec.id
--结束循环
and loop
commit;
end;
以上就是循环更新一个表
例子就不给你复杂的了。希望能帮到楼主。建议楼主可以看看他的语法,然后亲自写一个小例子,我决定这样理解的更深入一些
比如(鉴于你不是很理解,就给你弄个最简单的吧)
--创建一个游标
cursor cur1 is
select * from table where group by ..
begin
--遍历 游标 其中 rec 是游标的当前行数据
for rec in cur_1 loop
--根据rec 数据更新一个表
update tabel set row1= rec.rown, row2 =rec.row2
where id=rec.id
--结束循环
and loop
commit;
end;
以上就是循环更新一个表
例子就不给你复杂的了。希望能帮到楼主。建议楼主可以看看他的语法,然后亲自写一个小例子,我决定这样理解的更深入一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
每个游标区都有一个名字
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理
主语言是面向记录的,一组主变量一次只能存放一条记录
仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求
嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式
每个游标区都有一个名字
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理
主语言是面向记录的,一组主变量一次只能存放一条记录
仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求
嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
-- 声明游标;CURSOR cursor_name IS select_statement
--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_job%rowtype;
begin
for c_row in c_job loop
dbms_output.put_line(c_row.empno);
end loop;
end;
这个就是典型的游标例子,
select empno,ename,job,sal
from emp
where job='MANAGER'
查询出来的是个结果集合,游标就一条一条的读取出来
--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_job%rowtype;
begin
for c_row in c_job loop
dbms_output.put_line(c_row.empno);
end loop;
end;
这个就是典型的游标例子,
select empno,ename,job,sal
from emp
where job='MANAGER'
查询出来的是个结果集合,游标就一条一条的读取出来
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
游标由结果集(SQL语句的查询结果,可以是0条、一条或多条记录)和指向结果集中指向某条记录的游标位置组成,通过移动游标位置,可以对结果集中的记录进行遍历查询。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询