create   proc   procName 
@MaxCount   int 
as 
DECLARE @sql varchar(8000)
SET @sql = 'select   top  ' + rtrim(@MaxCount) + '   *   from   table '
EXEC(@sql)
GO

解决方案 »

  1.   

    select top 后面不带参数用动态
      

  2.   

    我也知道用动态,怎么动态写这条SQL语句不知道撒!
      

  3.   

    动态没有问题,请测试一下下面的代码:
    IF OBJECT_ID(N'tbTest') IS NOT NULL
        DROP TABLE tbTest
    IF OBJECT_ID(N'spTest') IS NOT NULL
        DROP PROC spTest
    GO
    ----创建测试数据
    CREATE TABLE tbTest(id int,name varchar(10))
    insert tbTest
    select 1,'a' union all
    select 2,'b' union all
    select 3,'c' union all
    select 4,'d' union all
    select 5,'e' 
    GO----创建存储过程
    CREATE PROC spTest @MaxCount int
    as
    DECLARE @sql varchar(8000)
    SET @sql = 'select   top  ' + rtrim(@MaxCount) + '   *   from   tbTest '
    EXEC(@sql)
    GO----调用存储过程
    DECLARE @MaxCount int
    SET @MaxCount = 2
    EXEC spTest @MaxCount
    GO----清除测试环境
    DROP TABLE tbTest
    DROP PROC spTest/*结果
    id          name       
    ----------- ---------- 
    1           a
    2           b
    */