分页存储过程: 
http://www.cnblogs.com/mbskys/articles/637287.html 
用我是基本会用,想把SQL语句也弄清楚,我没有专门学过SQL 
语句,呵呵 其中有一些是对字符串的操作吧?我对过网络查找 
搞明白一部分 其中的这一段我没看明白: 
    DECLARE @type varchar(50) 
    DECLARE @prec int 
    SELECT @type=t.name, @prec=c.prec 
    FROM sysobjects o 
    JOIN syscolumns c on o.id=c.id 
    JOIN systypes t on c.xusertype=t.xusertype 
    WHERE o.name = @SortTable AND c.name = @SortName 
    IF CHARINDEX('char', @type) > 0 
    SET @type = @type + '(' + CAST(@prec AS varchar) + ')' 
  
    DECLARE @TopRows INT  --下一页的第一条记录数 
    SET @TopRows = @PageSize * @CurrentPage + 1 
    print @TopRows 
    print @Operator 
我传进去的参数如下: 
@TableNames = News left join Newskinds on News.newsKindId = Newskinds.KindId left join users on News.userId = users.userId 
@PrimaryKey = News.NewsId 
@Fields = News.NewsId,news.newsTitle,news.pubDate,Newskinds.KindName,users.userName 
@PageSize = 2 
@CurrentPage CurrentPage - 1 
@Filter = strWhere = newsTitle like '%国际%'      
@Group 分组为空 
@Order = News.NewsId DESC 
@RecordCount 根据传进去的参数和字符串我组合出如下SQL语句,好像有点不对,请高手给我更正一下: 
DECLARE @SortColumnBegin ' + @type + ' 
SET ROWCOUNT 5 
SELECT News.NewsId FROM 
News left join Newskinds on News.newsKindId = Newskinds.KindId left join users on News.userId = users.userId 
WHERE newsTitle like '%国际%' ORDER BY News.NewsId DESC 
SET ROWCOUNT 2 
SELECT News.NewsId,news.newsTitle,news.pubDate,Newskinds.KindName,users.userName 
FROM News left join Newskinds on News.newsKindId = Newskinds.KindId left join users on News.userId = users.userId 
WHERE newsTitle like '%国际%' AND News.NewsId <= '@SortColumnBegin '  ORDER BY  News.NewsId DESC

解决方案 »

  1.   

    改一下过程,把拼出来的的语句print一下看看就知道了。如果你没有sql基础怎么说也说不明白的。
      

  2.   

    DECLARE @SortColumnBegin ' + @type + ' -->>这块好像由问题吧 做成一个t—sql语句,然后执行,要不变量没有生命
    SET ROWCOUNT 5 
    SELECT News.NewsId FROM 
    News left join Newskinds on News.newsKindId = Newskinds.KindId left join users on News.userId = users.userId 
    WHERE newsTitle like '%国际%' ORDER BY News.NewsId DESC 
    SET ROWCOUNT 2 
    SELECT News.NewsId,news.newsTitle,news.pubDate,Newskinds.KindName,users.userName 
    FROM News left join Newskinds on News.newsKindId = Newskinds.KindId left join users on News.userId = users.userId 
    WHERE newsTitle like '%国际%' AND News.NewsId <= '@SortColumnBegin '  ORDER BY  News.NewsId DESC 红色区域也由问题,执行时会把@SortColumnBegin这段字母作为值,而不是用变量所带便的值
      

  3.   

    @type,@SortColumnBegin 两个变量没有定义以外没什么问题。