因为你没有过一边遍历,所以一开始返回的一定是-1,你做个例子中不用使用游标也可以的呀,为什么使用游标?简单的统计数量,count出来就可以了

解决方案 »

  1.   

    问题找到了,StartTime 这个字段不能设为关键字,取消它为关键字就可以了,设为关键字就又不行了。可这是什么道理呢?哪位高人能指点迷津。
      

  2.   

    试试:declare @cur_rowCount int
    declare AppointData_Rain cursor STATIC for
      select StartTime,No_50_f,No_51_f,No_52_f,No_53_f,No_54_f,No_55_f,No_56_f,No_57_f,No_58_f,No_59_f,No_60_f,No_61_f
      from YZ_RealRain
      order by StartTime asc -- open it 
    open AppointData_Rain
    select  @cur_rowCount=@@cursor_rows
    -- no data return 
    if @cur_rowCount<1 
    begin
      print  @cur_rowCount
    end 
      

  3.   

    or:declare @cur_rowCount int
    declare AppointData_Rain INSENSITIVE  cursor for
      select StartTime,No_50_f,No_51_f,No_52_f,No_53_f,No_54_f,No_55_f,No_56_f,No_57_f,No_58_f,No_59_f,No_60_f,No_61_f
      from YZ_RealRain
      order by StartTime asc -- open it 
    open AppointData_Rain
    select  @cur_rowCount=@@cursor_rows
    -- no data return 
    if @cur_rowCount<1 
    begin
      print  @cur_rowCount
    end 
      

  4.   

    试过了,加 “STATIC”是可以的,能不能讲讲什么Static Cursors?
    什么是Dynamic Cursors?以及 INSENSITIVE?
      

  5.   

    INSENSITIVE定义一个游标,以创建将由该游标使用的数据的临时复本。对游标的所有请求都从 tempdb 中的该临时表中得到应答;因此,在对该游标进行提取操作时返回的数据中不反映对基表所做的修改,并且该游标不允许修改。使用 SQL-92 语法时,如果省略 INSENSITIVE,(任何用户)对基表提交的删除和更新都反映在后面的提取中。STATIC定义一个游标,以创建将由该游标使用的数据的临时复本。对游标的所有请求都从 tempdb 中的该临时表中得到应答;因此,在对该游标进行提取操作时返回的数据中不反映对基表所做的修改,并且该游标不允许修改。
    DYNAMIC定义一个游标,以反映在滚动游标时对结果集内的行所做的所有数据更改。行的数据值、顺序和成员在每次提取时都会更改。动态游标不支持 ABSOLUTE 提取选项。KEYSET指定当游标打开时,游标中行的成员资格和顺序已经固定。对行进行唯一标识的键集内置在 tempdb 内一个称为 keyset 的表中。对基表中的非键值所做的更改(由游标所有者更改或由其它用户提交)在用户滚动游标时是可视的。其他用户进行的插入是不可视的(不能通过 Transact-SQL 服务器游标进行插入)。如果某行已删除,则对该行的提取操作将返回 @@FETCH_STATUS 值 -2。从游标外更新键值类似于删除旧行后接着插入新行的操作。含有新值的行不可视,对含有旧值的行的提取操作将返回 @@FETCH_STATUS 值 -2。如果通过指定 WHERE CURRENT OF 子句用游标完成更新,则新值可视。