比如要设置到第N行。用SQL语句如何设置?

解决方案 »

  1.   

    可以查看联机帮助fetch相关信息。ABSOLUTE {n | @nvar}如果 n 或 @nvar 为正数,返回从游标头开始的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为负数,返回游标尾之前的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为 0,则没有行返回。n 必须为整型常量且 @nvar 必须为 smallint、tinyint 或 int。
      

  2.   

    语法:
    FETCH
    从 Transact-SQL 服务器游标中检索特定的一行。语法
    FETCH
            [ [ NEXT | PRIOR | FIRST | LAST
                    | ABSOLUTE { n | @nvar }
                    | RELATIVE { n | @nvar }
                ] 
                FROM
            ] 
    { { [ GLOBAL ] cursor_name } | @cursor_variable_name } 
    [ INTO @variable_name [ ,...n ] ]参数
    NEXT返回紧跟当前行之后的结果行,并且当前行递增为结果行。如果 FETCH NEXT 为对游标的第一次提取操作,则返回结果集中的第一行。NEXT 为默认的游标提取选项。PRIOR返回紧临当前行前面的结果行,并且当前行递减为结果行。如果 FETCH PRIOR 为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST返回游标中的第一行并将其作为当前行。LAST返回游标中的最后一行并将其作为当前行。ABSOLUTE {n | @nvar}如果 n 或 @nvar 为正数,返回从游标头开始的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为负数,返回游标尾之前的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为 0,则没有行返回。n 必须为整型常量且 @nvar 必须为 smallint、tinyint 或 int。RELATIVE {n | @nvar}如果 n 或 @nvar 为正数,返回当前行之后的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为负数,返回当前行之前的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为 0,返回当前行。如果对游标的第一次提取操作时将 FETCH RELATIVE 的 n 或 @nvar 指定为负数或 0,则没有行返回。n 必须为整型常量且 @nvar 必须为 smallint、tinyint 或 int。GLOBAL指定 cursor_name 指的是全局游标。cursor_name要从中进行提取的开放游标的名称。如果同时有以 cursor_name 作为名称的全局和局部游标存在,若指定为 GLOBAL 则 cursor_name 对应于全局游标,未指定 GLOBAL 则对应于局部游标。@cursor_variable_name游标变量名,引用要进行提取操作的打开的游标。INTO @variable_name[,...n]允许将提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
      

  3.   

    select top 1 * from (select top n * from table) a order by col desc
      

  4.   

    -- 定义游标
    DECLARE tb CURSOR SCROLL
    FOR
    SELECT id FROM sysobjects-- 打开游标
    OPEN tb-- 到第1行
    FETCH ABSOLUTE  1 FROM tb-- 到第3行
    FETCH ABSOLUTE  3  FROM tb-- 关闭及释放游标
    CLOSE tb
    DEALLOCATE tb