create proc up_GetNewsByCategory
@PageSize int,
@CategoryId nvarchar(16)
as
declare @sql nvarchar(1000)
set @sql = 'select top '+cast(@PageSize as nvarchar(2))+ ' * from News where CategoryId = '+@CategoryId+' order by AddedDate desc'
exec(@sql)
go执行:up_GetNewsByCategory 5,'News'
报错:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'News' 附近有语法错误。

解决方案 »

  1.   


    create proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    declare @sql nvarchar(1000)
    set @sql = 'select top '+cast(@PageSize as nvarchar(2))+ ' * from News where CategoryId = '''+@CategoryId+''' order by AddedDate desc'
    exec(@sql)
    go
      

  2.   


    alter proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    declare @sql nvarchar(1000)
    set @sql = 'select top '+cast(@PageSize as nvarchar(2))+ ' * from News where CategoryId = '''+@CategoryId+''' order by AddedDate desc'
    exec(@sql)
    go
      

  3.   

    本帖最后由 libin_ftsafe 于 2008-09-19 17:30:56 编辑
      

  4.   

    create proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    declare @sql nvarchar(1000)
    set @sql = 'select top '+cast(@PageSize as nvarchar(2))+ ' * from News where CategoryId = '''+@CategoryId+''' order by AddedDate desc'
    exec(@sql)
    go
    News之前是没错误的,估计是后面@CategoryId的问题,给它加个引号
      

  5.   

    使用 print @sql 把最后执行的SQL语句打印出来看看。
      

  6.   

    create proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    set rowcount @PageSize
    SELECT * FROM news WHERE CategoryId=@CategoryId ORDER BY AddedDate DESC
    set rowcount 0
    go
      

  7.   

    不用动态sql
    create proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    select top cast@PageSize * from News where CategoryId = @CategoryId order by AddedDate descreturn
      

  8.   

    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: 'News' 附近有语法错误。
      

  9.   

    还没打印就报错了,后面的print没执行。
      

  10.   

    cast@PageSize附近有语法错误
      

  11.   


    create proc up_GetNewsByCategory
    @PageSize int,
    @CategoryId nvarchar(16)
    as
    select top (@PageSize) * from News where CategoryId = @CategoryId order by AddedDate descreturn
      

  12.   

    服务器: 消息 170,级别 15,状态 1,过程 up_GetNewsByCategory,行 5
    第 5 行: '(' 附近有语法错误。
      

  13.   

    Sql2000我注意中文输入法了,我不至于傻到那种程度,呵呵。
      

  14.   


    2000的话,那就不能那样用了,你给你的SQL代码本身是没问题的,你最好重新整理一下你的问题。
    你给的存储过程本身都是可以建立运行的,你再这样挤牙膏,估计没人会来帮你了。
      

  15.   

    sql server 2000中的top n n不能用变量哈,2005才可以哈