sql 2000 top 变量

2025-01-03 21:49:16
推荐回答(5个)
回答1:

2000可以用sp_executesql这个常用的系统存储过程,记住参数都要nvarchar
declare @id int,@i int,@sql nvarchar(4000)
set @sql='select @id = max(id) from dde where id in (select top ' + convert(varchar,@i) + ' id from dde)'
exec sp_executesql @sql,N'@id int output',@id output

回答2:

select @id=max(id) from sendconfig where id in (select top (@i) [id] from sendconfig )
你试试在变量上加个括号 而且要保证变量值不能为空
----------------------------------------------------------
啊?? 和2005 差距还挺大
用动态sql那 动态sql也有个取值的方法
不知道2005的和2000的一样不
2005的是这样的
---------------------
declare @sql nvarchar(1000),@id int
set @sql = "select @a=[id] from [table] where sm=sm"
execute sp_executesql N'@a int output',@id output
------------------
不知道和2000的一样不

回答3:

加个括号就可以了,因为2000 不支持这样的写法,或加[]这个也可以试下

回答4:

在SQL2000中top后是不能接变量的,变量只有特殊的处理
例如:品字符串,你写的这些我还没有看清楚

回答5:

select @id=max(id) from sendconfig where id in (select top (@i) id from sendconfig )
把变量i加个括号就OK了