SQL SERVER T-SQL 游标的初步研究

好久没有来iteye了,准备离开it行业,算了还是回来

最近在看SQL SERVER 游标这节的内容 感觉很有意思,写下来,方便以后我自己看

游标简单点就是对数据集合的处理,但是我们有时候只需要处理其中的一行,游标很有用

当然其实也可以用控制流语句来实现

题目  用循环输出表中的某列

一方式: 

use TEST;--测试数据库

 declare @n int = (select MIN(tb.id) from test_tb tb)

 declare @num int = (select max(tb.ID) from test_tb tb)

 while(@n<=@num)

 begin

  select  tb.id as '主键号', tb.name  as '列中内容' from test_tb tb  where tb.id=@n

  set @n = @n+1      

 end 

二方式: 

declare @youbiaoNeiRong varchar(2000) 

declare cur_test1 cursor for

select tb.name  from test_tb tb

open cur_test1 

fetch  cur_test1  into @youbiaoNR --- a

while @@FETCH_STATUS=0  --  b

begin  

select @youbiaoNR as 姓名

fetch  cur_test1  into @youbiaoNR

end

close cur_test1

--   c  print @youbiaoNR

deallocate cur_test1

-- d   if  @youbiaoNR<>''

-- (d)   print 0

注  a    fetch  表示把 selec 的内容放入  @youbiaoNeiRong

      b   @@FETCH_STATUS=0  是指结果集中的某一行 , 循环中注意  每fetch  一次 行数就+1

        c    close  是指游标关闭,但是@youbiaoNeiRong中存放的值(内存中)还没有释放

        d   deallocate   是指游标关闭,但是@youbiaoNeiRong中存放的值(内存中)已经释放

猜你喜欢

转载自linhfgo.iteye.com/blog/2100897