能专业一点吗?我知道要分页显示,但是具体要注意哪些事,该怎么显示好呢?比如分页,用pagesize还是在查询语句中加top n好呢?
比如游标类型,如用客户端+静态,几万条记录的话会不会出问题,我想过了,用top n对结果集比较好处理一点,但是写语句会比较麻烦一点,用pageSize语句不用更改,结果集处理也好处理,但在选择游标时,我就不太清楚,该怎么选择?

解决方案 »

  1.   

    方法一:
    select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
    select * from #temp where ID_Num>10 and ID_Num<=20
    例:http://expert.csdn.net/Expert/TopicView1.asp?id=1422566方法二:   SELECT Top @PageSize *
         FROM T
        WHERE SortField NOT IN (SELECT TOP @PageSize * @Pagei SortField
                                  FROM T
                              ORDER BY SortField
                                )
     ORDER BY SortField
      

  2.   

    好像在存储过程里面top后面不能跟变量的,加了就说语法错误,各位有什么办法吗?
      

  3.   

    真是的!!!,我知道要分页显示,但不知道采用哪种方法进行分页,
    如果用pagesize进行分页的话,该怎么选择游标类型呢?
    如果用top n进行显示的话,好像在存储过程里这个n不能用变量,只能用exec()来执行,这样效率就低了。我不知道大力兄的第一种方法执行效率怎样,不过是一个好点子,
    难道没有其他好方法了吗?
      

  4.   

    exec(
       SELECT Top '+@PageSize+' *
         FROM T
        WHERE SortField NOT IN (SELECT TOP '+@PageSize*@Pagei+' SortField
                                  FROM T
                              ORDER BY SortField
                                )
     ORDER BY SortField')
      

  5.   

    我不知道搂主做的试什么程序,但我还是赞同wenejiang(伊麦龙)的说法,几万条记录的话查询结果有什么意义?pengdali(大力)的做法确实可以解决分页问题,但对实际工作有没有意义啊
      

  6.   

    怎么没意义呢??
    你如果要分页当然是下面的呀!你想想一个没加where的select把几万条记录通过网线下载到客户端,这将是灾难!!!exec(
       SELECT Top '+@PageSize+' *
         FROM T
        WHERE SortField NOT IN (SELECT TOP '+@PageSize*@Pagei+' SortField
                                  FROM T
                              ORDER BY SortField
                                )
     ORDER BY SortField')
      

  7.   

    楼主,top后面是不能跟变量。这就要像大力一样,用动态sql语句
      

  8.   

    用大力兄的是一种不错的解决方法,我赞成,我一开始也是这样想的,但我是想还有没有其他方法,当然其他方法不一定好。
    比如用adodb.recordset的pagesize来处理,游标设成服务器方游标,这样子就不用写动态sql了,不过不知道是否可行,是否会对服务器造成过大的压力,我没试过。
    有没有谁试过。