是类似于这样的语句declare  @a_number  int
select  @a_number = 10
select  top   @a_number  card_id  from ks_card
你能发现这个sql语句有什么错误码?不信的话,你自己复制执行一下,会出现这种的错误:
Incorrect syntax near '@a_number'.

解决方案 »

  1.   

    declare @a_number int
    select @a_number = 10
    declare @sql varchar(1000)
    set @sql='select top '+ltrim(@a_number)+' card_id from ks_card'
    exec (@sql)
      

  2.   

    2005declare @a_number int
    select @a_number = 10
    select top( @a_number) card_id from ks_card
      

  3.   

    select top x语句,x不能为变量,且x不能加括号。
    1.用组合语句,然后用exec执行
    2.用set rowcount
    declare @a_number int
    select @a_number = 10
    set rowcount @a_number
    select card_id from ks_card
    ...
    set rowcount 0
      

  4.   

    if OBJECT_ID('#ks_card') is not null
    drop table #ks_card
    go
    create table #ks_card (card_id int)
    go
    insert into #ks_card
    select  1 a union all select 2
    go
    declare @a_number int = 10
    select top (@a_number) card_id from #ks_card
    --result:
    card_id
    -----------
    1
    2(2 行受影响)
      

  5.   

    SQLSERVER 2000中 SELECT TOP 后面是不能够接变量的。
    SQLSERVER 2005、2008中 SELECT TOP 后面可以直接用变量。
      

  6.   

    不行  我得还是报错
    Incorrect syntax near