MS SQL中select top 后跟变量

SQL2005 中selecdt top后是可以直接跟变量的比如:(但要注意的是变量要用括号括起来)

select top (@i )* from table

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

要解决2000中top后跟变量的方法有两种:
第一种: 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来实现

  

1  set rowcount 100      --设置读取的条数
2     DECLARE rs CURSOR   LOCAL SCROLL FOR
3     --设置数据源
4     select * from table
5     OPEN rs
6 
7     set rowcount 0        --恢复读取的条数

转载于:http://hi.baidu.com/qqdancer_xxl/item/55c0f50db7e075c9905718d3

转载于:https://www.cnblogs.com/Rootmn/p/3691056.html

你可能感兴趣的:(MS SQL中select top 后跟变量)