分页存储过程,返回总行数?

yyixin 2010-03-08 01:06:16

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go




ALTER procedure [dbo].[SelectTable]
(@pagesize int,
@pageindex int,
@user varchar(255),
@docount bit,
@rowsum int output
)
as
begin
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY ID desc)AS Row, * FROM TableDn O where username=@user)
SELECT * FROM temptbl where Row between (@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize


-- SELECT @rowsum=COUNT(*) FROM TableDn username=@user
-- 更好的方法
end

...全文
181 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2010-03-08
  • 打赏
  • 举报
回复
你要总行数只能count(1)
yyixin 2010-03-08
  • 打赏
  • 举报
回复
引用 13 楼 yyixin 的回复:
自己解决:

SET  @rowsum=@@ROWCOUNT


啊呀!搞错了
-狙击手- 2010-03-08
  • 打赏
  • 举报
回复
引用 13 楼 yyixin 的回复:
自己解决:

SET  @rowsum=@@ROWCOUNT


..
yyixin 2010-03-08
  • 打赏
  • 举报
回复
(1 行受影响)

语句执行花费时间(毫秒)
------------
150

(1 行受影响)

看来要学的东西太多了
yyixin 2010-03-08
  • 打赏
  • 举报
回复
自己解决:

SET @rowsum=@@ROWCOUNT

ChinaJiaBing 2010-03-08
  • 打赏
  • 举报
回复

前台里看看

sqlcommand cmd = new sqlcommand(sql,dbconn)
cmd.ExecuteNonQuery()----返回影响的条数

yyixin 2010-03-08
  • 打赏
  • 举报
回复
引用 7 楼 sql77 的回复:
这个排序列是怎么样的,05的不懂呢,是相同USER的排序还是所有的排序,如果是所有的,可以


是USER排序吧,我就是要取所有符合USER的行数
mxc1225 2010-03-08
  • 打赏
  • 举报
回复
引用 9 楼 yyixin 的回复:
效率还可以的吧 十万条数据:

EXEC @return_value = [dbo].[SelectTable]
@pagesize = 20,
@pageindex = 1,
@user = N'我是中国人',
@rowsum = @rowsum OUTPUT
SELECT @rowsum as N'@rowsum'
SELECT 'Return Value' = @return_value

(1 行受影响)

语句执行花费时间(毫秒)
------------
380

(1 行受影响)

这种效率很好啊!
yyixin 2010-03-08
  • 打赏
  • 举报
回复
效率还可以的吧 十万条数据:

EXEC @return_value = [dbo].[SelectTable]
@pagesize = 20,
@pageindex = 1,
@user = N'我是中国人',
@rowsum = @rowsum OUTPUT
SELECT @rowsum as N'@rowsum'
SELECT 'Return Value' = @return_value

(1 行受影响)

语句执行花费时间(毫秒)
------------
380

(1 行受影响)
东那个升 2010-03-08
  • 打赏
  • 举报
回复
数据大了这个过程效率不高吧。。。。。
SQL77 2010-03-08
  • 打赏
  • 举报
回复
引用 6 楼 yyixin 的回复:
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY ID desc)AS Row, * FROM TableDn O where username=@user)

在这里面得不到吗?比如取最大的行号

这个排序列是怎么样的,05的不懂呢,是相同USER的排序还是所有的排序,如果是所有的,可以
yyixin 2010-03-08
  • 打赏
  • 举报
回复
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY ID desc)AS Row, * FROM TableDn O where username=@user)

在这里面得不到吗?比如取最大的行号
qianshangsheqin 2010-03-08
  • 打赏
  • 举报
回复
SET @rowsum =(SELECT COUNT(*) FROM TableDn where username=@user )
--小F-- 2010-03-08
  • 打赏
  • 举报
回复
这样其实已经够简单了
黄_瓜 2010-03-08
  • 打赏
  • 举报
回复
引用楼主 yyixin 的回复:
SQL codeset ANSI_NULLSONset QUOTED_IDENTIFIERONgoALTERprocedure[dbo].[SelectTable]
(@pagesizeint,@pageindexint,@uservarchar(255),@docountbit,@rowsumint output
)asbeginwith temptblas (SELECT ROW_NUMBE?-

貌似没有,我也想知道。呵呵
SQL77 2010-03-08
  • 打赏
  • 举报
回复
-- SET @rowsum =(SELECT COUNT(*) FROM TableDn username=@user )
-- 更好的方法


这样了还要更好的?
mxc1225 2010-03-08
  • 打赏
  • 举报
回复
面试中遇到的问题基本囊括其中 说出Servlet的生命周期,并说出Servlet和CGI的区别。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其 service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 12.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 13.EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 14.说出据连接池的工作机制是什么? 15同步和异步有和异同,在什么情况下分别使用他们?举例说明。 16应用服务器有那些? 17你所知道的集合类都有哪些?主要方法? 18给你一个:驱动程序A,据源名称为B,用户名称为C,密码为D,据库表为T,请用JDBC检索出表T的所有据。 19.说出在JSP页面里是怎么分页的? 页面需要保存以下参总行:根据sql语句得到总行 每页显示行:设定值当前页:请求参 页面根据当前页和每页行计算出当前页第一行行,定位结果集到此行,对结果集取出每页显示行的行即可。 据库方面:1.存储过程和函的区别存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函通常是据库已定义的方法,它接收参返回某种类型的值并且不涉及特定用户表。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧