几个较好的数据库分页过程
来源:互联网 发布:重装系统后没网络 编辑:程序博客网 时间:2024/06/06 16:39
作者:Maverick
blog:http://blog.csdn.net/zhaohuabing 转载请注明出处
一 oracle
CREATE OR REPLACE PROCEDURE page(
p_num integer,
p_size integer,
condition clob,
table_name varchar,
p_rowset out sys_refcursor)
AS
BEGIN
OPEN p_rowset FOR
'SELECT *
FROM (
SELECT ROWNUM r, t1.*
FROM (
SELECT '|| table_name || '.* FROM '|| table_name || ' '
|| condition || 'ORDER BY happentime desc) t1
WHERE ROWNUM <= ' || p_size*p_num || ' ) t2
WHERE t2.r > ' || p_size*(p_num-1);
END PAGE;
二 mssql
CREATE PROCEDURE page
@p_num int,
@p_size int,
@condition text,
@table_name nvarchar(100),
@current_page_size int
AS
if @p_num = 1
execute('SELECT TOP '+ @p_size +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC')
else
if @current_page_size != @p_size
execute('SELECT * FROM(
SELECT TOP '+ @current_page_size +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime
) as t ORDER BY happentime DESC')
else
begin
declare @tmp int
set @tmp = @p_size * @p_num
execute('SELECT * FROM(
SELECT TOP '+ @p_size +' * FROM(
SELECT TOP '+ @tmp +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC
) AS t1 ORDER BY happentime
) as t2 ORDER BY happentime DESC')
end
GO
三 sybase
CREATE PROCEDURE page
@p_num int,
@p_size int,
@condition nvarchar(3000),
@table_name nvarchar(100),
@current_p_size int
AS
DECLARE @str_p_size varchar(20),
@str_tmp varchar(20),
@str_current_p_size varchar(20),
@i_rowcount int
begin
select @str_tmp=cast(@p_size * @p_num as varchar(20))
select @str_p_size=cast(@p_size as varchar(20))
select @str_current_p_size=cast(@current_p_size as varchar(20))
if @p_num = 1
begin
set @i_rowcount=@p_size*@p_num
set rowcount @i_rowcount
execute('SELECT * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC')
end
else
if @current_p_size != @p_size
begin
set rowcount @current_p_size
execute('SELECT * INTO #temp FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime
SELECT * FROM #temp ORDER BY happentime DESC')
end
else
begin
set @i_rowcount=@p_size*@p_num
set rowcount @i_rowcount
execute('SELECT * INTO #temp1 FROM '+ @table_name + ' ' + @condition +' ORDER BY happentime DESC
SELECT TOP '+ @str_p_size + ' * INTO #temp2 FROM #temp1 ORDER BY happentime
SELECT * FROM #temp2 ORDER BY happentime DESC')
end
end
- 几个较好的数据库分页过程
- 较好的分页方法
- 较好的top分页方法
- 学习OpenGL的几个较好的网址
- 计算机视觉中几个较好的网站
- 总结的几个 sql 分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 较好的重新启动数据库的步骤
- Oracle数据库较好的重新启动步骤
- 网上收藏的几个邹老大的分页存储过程
- 网上收藏的几个邹老大的分页存储过程
- 自已写的几个分页的存储过程
- c++指针测试
- GNUPro
- 关于我国电子商务立法的思考
- 如何向各种数据库中写入blob类型的记录
- Java Bindings for OpenGL 1 - JOGL简介与安装
- 几个较好的数据库分页过程
- “true”和“false(!true)”意义完全相反,差别却只有一个“!”
- Acegi Security System for Spring 书摘(II)
- 轻松读《Effective C++ 2/e》
- Google新动作频出 Google Trends发布
- 蓝牙的移植
- 谁不好好干,就叫他去印度开办事处
- 将一个背景图片加到对话框上作为背景
- 运10"的夭折