asp.net大数据量分页,数据库是oracle
asp.net网站,数据库是oracle,数据绑定到GridView上,实现分页现在用的分页是查询所有在分页,这样如果数据很多的话,就会很慢
在网上查,很多人都说用分页存储过程
求一个分页的存储过程(oracle数据库)
还有就是存储过程建好后,应该怎么调用,在aspx.cs里应该怎样写GridView实现分页
请详细说明下啊,新手很多地方都不懂啊,有完整的例子最好啊 --------------------编程问答-------------------- oracle有个rowid的吧 --------------------编程问答-------------------- 1:select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum =< max) where rownum_ >= min
2:SELECT TOP 10 * FROM TestTable WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP20 id FROM TestTable ORDERBYid)AS T))ORDERBY ID SELECT TOP 页大小* FROM TestTable WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP 每页大小*待查询页数-1 id FROM 表 ORDERBY id)AS T)) ORDERBY ID
思路:先获得待查询页的之前全部条数id,获得它们当中最大的ID号,以此最大ID号为标志,查找比这个ID号大的指定条数 --------------------编程问答-------------------- http://www.cnblogs.com/hnsdwhl/archive/2011/09/04/2166522.html --------------------编程问答-------------------- 说错了,rownum哈 --------------------编程问答--------------------
这个应该怎样运用到分页上 --------------------编程问答--------------------
能不能说的具体点,不懂啊 --------------------编程问答--------------------
你懂sql吗?
不懂的话那就没办法了。 --------------------编程问答-------------------- 缓存!sql创建索引! 临时表分页!
单纯的存储过程 解决不了很大的数据量! --------------------编程问答--------------------
ASP.NET调用oracle存储过程实现快速分页 --------------------编程问答--------------------
这个在数据库里运行出错:Warning: compiled but with compilation errors
--------------------编程问答-------------------- 用分页存储过程配合AspNetPager实现分页:http://www.webdiyer.com/controls/aspnetpager --------------------编程问答-------------------- LZ 可以去看看 基本上可以满足你的需求
http://blog.csdn.net/xiaolongit/article/details/8286463 --------------------编程问答-------------------- http://blog.csdn.net/xiaolongit/article/details/8286463[/url] --------------------编程问答--------------------
sql procdure code:
create proc [dbo].[MyPages](
@tableName varchar(155),
@pageIndex int,
@pageSize int,
@pageCurrent int output,
@pageNumber int output, --总页数
@pageCount int output, --总记录
@clickType varchar(15)=null,--点击按钮的类型
@keyId varchar(15),
@columnName varchar(255),
@strWhere varchar(1000)
)
as
declare @totalCount int
declare @strCount nvarchar(155)
declare @strSql nvarchar(1000)
set nocount on
set @strCount='SELECT @totalCount=COUNT(*) FROM '+ @tableName+' WHERE '+@strWhere
exec sp_executeSql @strCount,N'@totalCount int out',@totalCount=@pageCount out
if(@pageCount%@pageSize=0)
set @pageNumber=(@pageCount/@pageSize)
else
begin
set @pageNumber=(@pageCount/@pageSize)+1
end
--if(@strWhere='')begin set @strWhere='1=1' end
if(@clickType!='')begin
if(@clickType='pre')begin
set @pageIndex=(@pageIndex-1)
end
else if(@clickType='next')begin
set @pageIndex=(@pageIndex+1)
end
end
set @pageCurrent=@pageIndex
set @strSql='SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@keyId+' DESC) AS Row,'+@columnName+' FROM '+@tableName+' WHERE '+ @strWhere+' ) TT WHERE TT.Row BETWEEN '+str((@pageIndex-1)*@pageSize+1)+' AND '+str(@pageIndex*@pageSize)
exec (@strSql)
set nocount off
这个存储过程你用过么,运行:无效的SQL语句,把这个“sql procdure code:”这个去掉:ORA-00901: 无效 CREATE 命令 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 嗯,可以用的 sql procdure code:去掉 --------------------编程问答-------------------- demo
SELECT * FROM--------------------编程问答-------------------- 参考http://www.cnblogs.com/gisdream/archive/2011/11/16/2251687.html --------------------编程问答--------------------
(
SELECT a.*, rownum r__
FROM
(
SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
ORDER BY OrderDate DESC, ShippingDate DESC
) a
WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)
这里面很详细了
补充:.NET技术 , ASP.NET