黑马程序员技术交流社区

标题: 高效分页中怎么控制显示数据的行数 [打印本页]

作者: 高宜    时间: 2012-7-31 10:39
标题: 高效分页中怎么控制显示数据的行数
  1. select * from
  2. (
  3. select newsId,newsTitle,newsText,newsDate,Row_Number() over(order by newsId) rownum from dbo.news
  4. )t
  5. where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows
复制代码
中startRowIndex、和maximumRows是通过回调的方式调用,关于回调不是很理解;
怎么调整当前页中显示的行的条数。
自己想在SQL中
  1. select * from
  2. (
  3. select newsId,newsTitle,newsText,newsDate,Row_Number() over(order by newsId) rownum from dbo.news
  4. )t
  5. where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows+5
复制代码
来尝试调整每页显示的行数,但没有效果,求高手指点
作者: 许庭洲    时间: 2012-7-31 10:58
将where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows条件语句修改为where t.rownum>@startRowIndex and t.rownum<=(@startRowIndex+@maximumRows)试试看。
作者: 蔡尚猛    时间: 2012-7-31 10:58
嘿嘿,开始声明的时候是true;,当你输入一个非数字的时候程序就会报异常,flag就会变成false,然后就跳出出循环了;输入一个正确的数字的时候,flag初始化就是true,也就是flag再次设定为true;,看来确实没什么意思,不过最好还是存在的好,如果flag声明的时候不赋值就不同了,带着这样看着明白,
作者: 高宜    时间: 2012-7-31 11:03
许庭洲 发表于 2012-7-31 10:58
将where t.rownum>@startRowIndex and t.rownum@startRowIndex and t.rownum

恩 严谨点是应该加上括号,但不影响运行。
作者: 高宜    时间: 2012-7-31 11:04
本帖最后由 高宜 于 2012-7-31 11:15 编辑
蔡尚猛 发表于 2012-7-31 10:58
嘿嘿,开始声明的时候是true;,当你输入一个非数字的时候程序就会报异常,flag就会变成false,然后就跳出出 ...
原来是发错位置了。。。。
作者: 许庭洲    时间: 2012-7-31 11:10
高宜 发表于 2012-7-31 11:03
恩 严谨点是应该加上括号,但不影响运行。

dbo.news,将表名前缀dbo去掉试试看!
作者: 高宜    时间: 2012-7-31 11:18
许庭洲 发表于 2012-7-31 11:10
dbo.news,将表名前缀dbo去掉试试看!

谢了,关于高效分页的SQL语句执行没有问题,只是不懂这里startRowIndex和maximumRows通过回调是怎么传递参数的,能否修改其值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2