CREATE PROCEDURE countpro
@count int 
 AS
select top 5 * from db where CId<all(select top @count
CId from db order by CId desc)  order by CId desc
GO这句@countCId附近语法有问题````大家帮忙解决下....谢谢了.

解决方案 »

  1.   

    top 后面指定条数不能为变量。如果真想使用变量的话,就把整个SQL 写成一个串,通过EXCE来执行吧!
      

  2.   

    像这样:  CREATE PROCEDURE countpro 
    @count int 
    AS 
    declare @sql varchar(200)
    set @sql = 'select top 5 * from db where CId < all(select top ' + cast(@count as varchar(10)) + '  CId from db order by CId desc)  order by CId desc'
    exec @sql
      

  3.   

     CREATE PROCEDURE countpro 
    @count int 
    AS select top 5 * from db where CId <all(select top @count 
    CId from db order by CId desc)  order by CId desc GO 
    TOP 后面不能跟变量你可以这样写
     CREATE PROCEDURE countpro 
    @count int 
    AS 
    declare sql varchar(500)
    set sql='select top 5 * from db where CId <all(select top '
    exec(sql+@countCID+'from db order by CId desc)  order by CId desc')
    GO