是类似于这样的语句declare @a_number int
select @a_number = 10
select top @a_number card_id from ks_card
你能发现这个sql语句有什么错误码?不信的话,你自己复制执行一下,会出现这种的错误:
Incorrect syntax near '@a_number'.
select @a_number = 10
select top @a_number card_id from ks_card
你能发现这个sql语句有什么错误码?不信的话,你自己复制执行一下,会出现这种的错误:
Incorrect syntax near '@a_number'.
select @a_number = 10
declare @sql varchar(1000)
set @sql='select top '+ltrim(@a_number)+' card_id from ks_card'
exec (@sql)
select @a_number = 10
select top( @a_number) card_id from ks_card
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
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 行受影响)
SQLSERVER 2005、2008中 SELECT TOP 后面可以直接用变量。
Incorrect syntax near