一个简单游标,依次print表test的name字段
declare @name varchar(50)
declare @sql varchar(100)
declare csr1 cursor
for 
  select name from test
open csr1FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
  BEGIN
        print @name
  fetch next from csr1 into @name
  END
CLOSE csr1
DEALLOCATE csr1

解决方案 »

  1.   

    declare @id int
    declare @sql varchar(100)
    declare csr1 cursor
    for 
      select 你的列 from test
    open csr1FETCH NEXT FROM csr1 INTO @id
    while (@@FETCH_STATUS=0)
      BEGIN
           if id=10
            begin
             --在这里进行你的处理
            end
           if id=100
            begin
             --在这里进行你的处理
            end
            ……
      fetch next from csr1 into @id
      END
    CLOSE csr1
    DEALLOCATE csr1
      

  2.   

    --示例
    declare @row intdeclare tb cursor local for select * from 表
    open tb
    fetch next from tb
    set @row=1          --行号
    while @@fetch_status=0
    begin
    if @row betwenn 10 and 1000
    update 表 set 字段='abc' where current of tb
    else if @row between 2000 and 5000
    update 表 set 字段='cde' where current of tb
    else
    update 表 set 字段='efg' where current of tb
    fetch next from tb
    set @row=@row+1
    end
    close tb
    deallocate tb
    select * from 表
      

  3.   

    先谢谢。if id=10
    ............
    if id= 100为什么是等于啊~~?
    未什么不是
    if  id>=10
    ........
    if id<=100呢~~?
      

  4.   

    to zjcxc:不是要循环判断行号,而是行内的某字段的值`~!谢谢~~!
      

  5.   

    我是举个例子呀,你也可以该成
    if  id>=10
    ........
    if id<=100
    对了,id前面少了@
    应该是
    declare @id int
    declare @sql varchar(100)
    declare csr1 cursor
    for 
      select 你的列 from test
    open csr1FETCH NEXT FROM csr1 INTO @id
    while (@@FETCH_STATUS=0)
      BEGIN
           if @id>=10
            begin
             --在这里进行你的处理
            end
           if @id<=100
            begin
             --在这里进行你的处理
            end
            ……
      fetch next from csr1 into @id
      END
    CLOSE csr1
    DEALLOCATE csr1
      

  6.   

    update 表 set 某字段
        =case when 某字段 when 10 and 1000 then 'abc'
              when 某字段 when 5000 and 10000 then 'cde'
              when 某字段 when 15000 and 20000 then 'efg'
         else 'other' end
      

  7.   

    to netcoder :还是不对,@id是行号吧,上面的脚本是处理第10行到100行的数据;我的意思是对每一行中谋个字段的值进行判断,也就是要判断每一行的同一个字段值~~!谢谢~~!
      

  8.   

    to zjcxc:可不可以写个完整的脚本,多加些注释~~!我很笨吧~~!呵呵~~!多谢`~!:)
      

  9.   

    to zjcxc:表结构:
     ye      ---月份
     kmdm    ---科目代码
     je      ---金额
     pd      ---判断
    要求:
     满足科目代码的值在204001至204999之间的数据行,update pd数值为1
     反之 pd数值为2。多多谢~~!
      

  10.   

    update 表 set pd=case when 科目代码 when '204001' and '204999' then 1 else 2 end
      

  11.   

    UPDATE TABLENAME
    SET PD=CASE WHEN kmdm  BETWEEN '2004001' AND '2004999' THEN 1
       ELSE 2
       END
      

  12.   

    to zjcxc:我想把kmdm定义成变量(@kmdm),该怎样写~~!?
    declare @kmdm char(10)
    set @kmdm ="between '204001' and '204999'"可是传入变量时: kmdm=@kmdm 就成了 kmdm = between '204001' and '204999',=和between同时存在,语法错误~~!该咋办啊`~!?郁闷ing......~~!
      

  13.   

    exec('update 表 set pd=case when kmdm '+@kmdm+' then 1 else 2 end'
      

  14.   

    to zjcxc:真的谢谢你`~!最后一个问题:怎样读取第@row行的某个字段值~~!:)
      

  15.   

    help me~~~~~~~~~~~~~~~~~~~~~~~~~~~!thanks~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
      

  16.   

    to zjcxc:真的谢谢你`~!最后一个问题:怎样读取第@row行的某个字段值~~!:)
      

  17.   

    to zjcxc:晕~~~!就差这一点了`~!不会让我用其他开发语言再写一遍吧`~!哎~~~!还是多多谢你了~~!
      

  18.   

    表结构:
     ye      ---月份
     kmdm    ---科目代码
     je      ---金额
     pd      ---判断--得到第5行的je
    declare @je money,@row int
    set @row=0
    select @row=@row+1,@je=case @row when 5 then je else @je from 表
    select 结果=@je