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          -- 恢复读取的条数

 

你可能感兴趣的:(sql2000)