一个分页用的存储过程,表里面有个id字段是自增型的。
我分页的做法是根据提供的第几页数和每页数量来做的,
存储过程中有这样一个语句 
     SELECT @TID=MAX([id]) FROM(SELECT TOP @COUNT [id] FROM city) AS T
    SELECT @TID
是用来获取给定行数和页数得到的最大id号的,但是SQL2000不支持SELECT TOP @COUNT 这样的形式,请问这句SQL语句应该怎么修改才能在SQL2000里正确执行?
谢谢~~

解决方案 »

  1.   

    2000里不支持top加参数
    2005 里可以 select top(@count) from table
      

  2.   

    exec('SELECT '+@TID+'=MAX([id]) FROM(SELECT TOP '+@COUNT+' [id] FROM city) AS T
        SELECT @TID')
      

  3.   

    动态存储过程declare @sql nvarchar(1000)
    set @sql=n'SELECT MAX([id]) FROM(SELECT TOP @COUNT [id] FROM city) AS T'
    exec sp_exectesql @sql,N'@COUNT int',@count
      

  4.   

    SELECT @SQL=N'SELECT '+CONVERT(VARCHAR(10),@TID)+'=MAX([id]) FROM(SELECT TOP '+CONVERT(VARCHAR(10),@COUNT)+' [id] FROM city) AS T'
        SELECT @SQL
        Exec sp_executesql @SQL
        SELECT @TID
    还是不能返回值,返回的是NULL
      

  5.   

    create table #ls
    (Co int)
    SELECT @SQL=N'insert into #ls SELECT MAX([id]) FROM(SELECT TOP '+CONVERT(VARCHAR(10),@COUNT)+' [id] FROM city) AS T'
        Exec sp_executesql @SQL
      

  6.   

    exec('SELECT '+@TID+'=MAX([id]) FROM(SELECT TOP '+@COUNT+' [id] FROM city) AS T')
        SELECT @TID'
      

  7.   


    Alter   PROCEDURE aaa 
    (
    @a        int = 1
    )
     AS 
     SET NOCOUNT ON 
    declare @sql nvarchar(4000)
    set @sql='SELECT MAX([id]) FROM(SELECT TOP '+ CONVERT(nVARCHAR(10),@a)+' [id] FROM TbFixeDassetsPlan) AS T'
    Exec sp_executesql @sqlexec aaa 5话说这样没问题...刚才楼上几位的都貌似对了...
      

  8.   


    我的SQL语句上有个取值的语句哦。SELECT @TID=MAX([id]) FROM(SELECT TOP @COUNT [id] FROM city) AS T
    SELECT @TID我得到了这个@TID后下面还有操作的。
      

  9.   

        SELECT @SQL='SELECT * FROM city where [id]>=(select max([id]) from (select top '+CAST(@COUNT as varchar(10))+' [id] from [city]) as t)'
        exec @SQLOK
      

  10.   


    Alter   PROCEDURE aaa 
    (
    @a        int = 1
    )
     AS 
     SET NOCOUNT ON 
    declare @sql nvarchar(500)
    declare @aa nvarchar(4000)
    set @sql='SELECT ''@aa''=MAX([id]) FROM(SELECT TOP '+ CONVERT(NVARCHAR(20),@a)+' [id] FROM TbFixeDassetsPlan) AS T'
    Exec sp_executesql @sql,N'@aa nvarchar ',@aa
    exec aaa 5