自已写的一个分页的存储过程
2011-03-31 10:59
387 查看
/****** Object: StoredProcedure [hyc].[TakePage] Script Date: 03/31/2011 10:58:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [hyc].[TakePage]
-- Add the parameters for the stored procedure here
@TableName varchar(500),
@PriKeyName varchar(200),
@ColNameList varchar(200)=' * ',
@PageSize int=10,
@PageNum int=1,
@WhereSentence nvarchar(600)=null,
@TotalRecord int out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @Sql nvarchar(500)
if @wheresentence is null
begin
set @sql='select @TotalRecord=count(*)'+' from '+@tablename
end
else
begin
set @sql='select @TotalRecord=count(*)'+' from '+@Tablename +' where '+@Wheresentence
end
--返回查询的记录总数,并赋予@TotalRecord
exec sp_executesql @sql,N'@TotalRecord int out',@TotalRecord out
print @sql
set @sql='select top '+convert(varchar(20),@PageSize)+' '+@ColNameList+ ' from ('+
'select row_number() over(order by '+@PriKeyName+') as RowNumber,* from '+@TableName
if @WhereSentence is null
begin
set @sql=@sql+') a where RowNumber>'+convert(varchar(50),@Pagesize*(@PageNum-1))
end
else
begin
set @sql=@sql+' where '+@Wheresentence+') a where RowNumber>'+convert(varchar(50),@Pagesize*(@PageNum-1))
end
print @sql
exec(@sql)
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [hyc].[TakePage]
-- Add the parameters for the stored procedure here
@TableName varchar(500),
@PriKeyName varchar(200),
@ColNameList varchar(200)=' * ',
@PageSize int=10,
@PageNum int=1,
@WhereSentence nvarchar(600)=null,
@TotalRecord int out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @Sql nvarchar(500)
if @wheresentence is null
begin
set @sql='select @TotalRecord=count(*)'+' from '+@tablename
end
else
begin
set @sql='select @TotalRecord=count(*)'+' from '+@Tablename +' where '+@Wheresentence
end
--返回查询的记录总数,并赋予@TotalRecord
exec sp_executesql @sql,N'@TotalRecord int out',@TotalRecord out
print @sql
set @sql='select top '+convert(varchar(20),@PageSize)+' '+@ColNameList+ ' from ('+
'select row_number() over(order by '+@PriKeyName+') as RowNumber,* from '+@TableName
if @WhereSentence is null
begin
set @sql=@sql+') a where RowNumber>'+convert(varchar(50),@Pagesize*(@PageNum-1))
end
else
begin
set @sql=@sql+' where '+@Wheresentence+') a where RowNumber>'+convert(varchar(50),@Pagesize*(@PageNum-1))
end
print @sql
exec(@sql)
END
GO
相关文章推荐
- 一个利用Sql Server 20005的 ROW_NUMBER Function 的分页存储过程.
- 详述在设有快表的请求分页存储管理系统中,一个虚地址转换成物理内存地址的过程。
- 再来一个分页存储过程
- 一个简单的oracle分页存储过程的实现和调用
- 一个ASP.NET分页的存储过程
- 一个高效的数据分页的存储过程 可以轻松应付百万数据
- 一个高效的数据分页的存储过程 可以轻松应付百万数据
- 自己改写的一个Sql Server 2000的分页存储过程
- 一个简单的存储过程数据分页
- SQLSERVER一个比较不错的分页存储过程p_splitpage
- 一个通用的分页存储过程,不晓得有用不得
- 分享一个分页存储过程和分页函数
- 一个简单的SQl存储过程分页
- 一个简单的ASP调用存储过程分页
- 一个将数据分页的存储过程--通用版
- 一个分页的存储过程
- 一个通用的分页存储过程
- 一个分页的存储过程
- 一个通用MSSQL海量数据分页存储过程
- 一个分页的存储过程