SQL2000中 Top后不能更变量的解决方法

在SQL2000中,Select Top后是不能直接更变量的,例如:

select top @i * from table


解决方法有两种:
第一种:

declare @i int,@sql varchar(100)
set @i = 100
set @sql = 'select top ' + cast(@i as varchar+ ' * from table'
exec(@sql)

通常我们可以使用这种方法来操作,但有时却不行,比如循环读取记录时(以下这么写会出错)

    declare @i int,@sql varchar(100)
    
set @i = 100
    
set @sql = 'select top ' + cast(@i as varchar+ ' * from table'
    
DECLARE rs CURSOR  LOCAL SCROLL FOR
    
--设置数据源
    exec(@sql)  
    
OPEN rs

第二种:使用set rowcount = 100来实现

    set rowcount 100      --设置读取的条数
    DECLARE rs CURSOR  LOCAL SCROLL FOR
    
--设置数据源
    select * from table
    
OPEN rs

    
set rowcount 0        --恢复读取的条数

原文地址:https://www.cnblogs.com/yeagen/p/1397784.html