在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)
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 @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 --恢复读取的条数
DECLARE rs CURSOR LOCAL SCROLL FOR
--设置数据源
select * from table
OPEN rs
set rowcount 0 --恢复读取的条数