日期:2014-05-18  浏览次数:20495 次

我的分页存储过程怎么老出错。。
--   存储过程如下:
CREATE       Proc       p_shows      
    @QueryStr       nvarchar(4000),   --表名、视图名、查询语句      
    @PageSize       int,--=10,   --每页的大小(行数)      
    @PageCurrent       int,--=1,   --要显示的页      
    @FdShow       nvarchar       (4000),--= ' ',   --要显示的字段列表,如果查询结果有标识字段,需要指定此值,且不包含标识字段      
    @FdOrder       nvarchar       (1000)--= ' '   --排序字段列表      
    as      
    declare       @FdName       nvarchar(250)   --表中的主键或表、临时表中的标识列名      
    ,@Id1       varchar(20),@Id2       varchar(20)   --开始和结束的记录号      
    ,@Obj_ID       int   --对象ID      
    --表中有复合主键的处理      
    declare       @strfd       nvarchar(2000)   --复合主键列表      
    ,@strjoin       nvarchar(4000)   --连接字段      
    ,@strwhere       nvarchar(2000)   --查询条件      
       
       
    select       @Obj_ID=object_id(@QueryStr)      
    ,@FdShow=case       isnull(@FdShow, ' ')       when       ' '       then       '       * '       else       '       '+@FdShow       end      
    ,@FdOrder=case       isnull(@FdOrder, ' ')       when       ' '       then       ' '       else       '       order       by       '+@FdOrder       end      
    ,@QueryStr=case       when       @Obj_ID       is       not       null       then       '       '+@QueryStr       else       '       ( '+@QueryStr+ ')       a '       end      
       
    --如果显示第一页,可以直接用top来完成      
    if       @PageCurrent=1      
    begin      
    select       @Id1=cast(@PageSize       as       varchar(20))      
    exec( 'select       top       '+@Id1+@FdShow+ '       from       '+@QueryStr+@FdOrder)      
    return      
    end      
       
    --如果是表,则检查表中是否有标识更或主键      
    if