CREATE PROCEDURE INFO
@nCount int
AS
select top @nCount *  from [Table1]
GO错误170 第4行 @nCount 附近有语法错误

解决方案 »

  1.   

    /*
    在TOP后面使用变量
    (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)  2008-01-02  广东深圳)
    */--SQL SERVER 2005 的写法
    use adventureworks
    goDECLARE @Percentage int
    SET @Percentage = 1
    SELECT TOP (@Percentage) PERCENT
    Name
    FROM Production.Product
    ORDER BY Name/*
    Name
    ----------------------
    Adjustable Race
    All-Purpose Bike Stand
    AWC Logo Cap
    BB Ball Bearing
    Bearing Ball
    Bike Wash - Dissolver(6 行受影响)
    */-----------------------------------
    --SQL SERVER 2000 的写法
    create table a([id] [int])
    insert into a(id) values(1)
    insert into a(id) values(2)
    insert into a(id) values(3)
    insert into a(id) values(4)
    insert into a(id) values(5)declare @num as int
    declare @sql as varchar(2000)
    set @num = 2
    set @sql = 'select top ' + cast(@num as char) + ' * from a'
    exec(@sql)drop table a
    /*
    id          
    ----------- 
    1
    2
    */
      

  2.   


    CREATE PROCEDURE INFO @nCount int 
    AS 
      exec('select top ' + cast(@nCount as varchar) + ' *  from [Table1]') 
    GO 
      

  3.   

    CREATE PROCEDURE INFO 
    @nCount int 
    AS declare @sql varchar(4000) 
    set @sql='select  top '  +cast(@nCount as varchar(8))+' *  From table 'exec( @sql)
     
    GO