当前位置: 代码迷 >> SQL >> SQL SERVER T-SQL 游标的初始研究
  详细解决方案

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

热度:80   发布时间:2016-05-05 11:11:27.0
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<[email protected])

?begin

? select ?tb.id as '主键号', tb.name ?as '列中内容' from?test_tb tb??where [email protected]

? 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 [email protected]<>''

-- (d) ? print 0

?

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

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

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

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

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  相关解决方案