代码如下,我想取top @articlenum的数据,但是程序提示@articlenum错误,不知该如何解决create procedure sp_getSomeArticle
   @articlenum int
as
   select top @articlenum articleid,title,addtime,author,browsetime from dt_article order by addtime desc
go

解决方案 »

  1.   

    这个应该用参数化查询用
    例如:
    create procedure sp_getSomeArticle
       @articlenum int
    as
       declare @sql nvarchar(200)
       set @sql = 'select top ' + cast(@articlenum as nvarchar) + ' From Mytable'
       sp_executesql @sql
    go
      

  2.   

    1错
    select top 
    top 后得加数字 如select top 5
      

  3.   

    同意楼上。
    不过楼上的少了个exec呵呵。
    create proc sp_Test
    @topnum int,@id int
    --假设需要检索id<@id的记录
    as
    declare @sql nvarchar(1000)
    set @sql = 'select top ' + cast(@topnum as nvarchar) + ' From Tablexx where id<@SPid'
    exec sp_executesql @sql,N'@SPid int',@SPid=@id
    另外楼主的写法sqlserver2005支持。
      

  4.   

    谢谢create procedure sp_getSomeArticle
       @articlenum int
    as
       declare @sql nvarchar(200)
       set @sql = 'select top ' + cast(@articlenum as nvarchar“此处是否应该改为int??”) + ' From Mytable'
       sp_executesql @sql
    go向 @articlenum添加数值也和平常一样吧??