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
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的一样不
加个括号就可以了,因为2000 不支持这样的写法,或加[]这个也可以试下
在SQL2000中top后是不能接变量的,变量只有特殊的处理
例如:品字符串,你写的这些我还没有看清楚
select @id=max(id) from sendconfig where id in (select top (@i) id from sendconfig )
把变量i加个括号就OK了