CREATE
PROC [dbo].[proc_select_id]
@pageindex
int
=1,
@pagesize
int
=10,
@tablename
VARCHAR
(50)=
''
,
@fields
VARCHAR
(1000)=
''
,
@keyid
VARCHAR
(50)=
''
,
@condition NVARCHAR(1000)=
''
,
@orderstr
VARCHAR
(500),
@totalRecord
BIGINT
OUTPUT
AS
IF
ISNULL
(@orderstr,N
''
)=N
''
SET
@orderstr=N
' ORDER BY '
+@keyid+N
' DESC '
IF
ISNULL
(@fields,N
''
)=N
''
SET
@fields=N
'*'
IF
ISNULL
(@condition,N
''
)=N
''
SET
@condition=N
'1=1'
DECLARE
@sql NVARCHAR(4000)
SET
@sql=N
'SELECT @totalRecord=COUNT(*)'
+N
' FROM '
+@tablename
+N
' WHERE '
+@condition
EXEC
sp_executesql @sql,N
'@totalRecord INT OUTPUT'
,@totalRecord
OUTPUT
IF(@pageindex=1)
BEGIN
SET
@sql=N
'SELECT TOP '
+STR(@pagesize)+N
' '
+@fields+N
' FROM '
+@tablename+N
' WHERE '
+@condition+N
' '
+@orderstr
EXEC
(@sql)
END
ELSE
BEGIN
DECLARE
@operatestr
CHAR
(3),@comparestr
CHAR
(1)
SET
@operatestr=
'MAX'
SET
@comparestr=
'>'
IF(@orderstr<>
''
)
BEGIN
IF(CHARINDEX(
'desc'
,
LOWER
(@orderstr))<>0)
BEGIN
SET
@operatestr=
'MIN'
SET
@comparestr=
'<'
END
END
SET
@sql=N
'SELECT top '
+STR(@pagesize)+N
' '
+@fields+N
' FROM '
+@tablename+N
' WHERE '
+@keyid+@comparestr
+N
'(SELECT '
+@operatestr+N
'('
+@keyid+N
') FROM '
+@tablename+N
' WHERE '
+@keyid
+N
' IN (SELECT TOP '
+STR((@pageindex-1)*@pagesize)+N
' '
+@keyid+N
' FROM '
+@tablename+N
' WHERE '
+@condition+N
' '
+@orderstr+N
')) AND '
+@condition+N
' '
+@orderstr
EXEC
(@sql)
END
GO
CREATE
PROC [dbo].[proc_select_page_row]
@pageindex
INT
=1,
@pagesize
INT
=10,
@tablename
VARCHAR
(50)=
''
,
@fields
VARCHAR
(1000)=
'*'
,
@keyid
VARCHAR
(50)=
''
,
@condition NVARCHAR(1000)=
''
,
@orderstr
VARCHAR
(500),
@totalRecord
BIGINT
OUTPUT
AS
IF
ISNULL
(@orderstr,N
''
)=N
''
SET
@orderstr=N
' ORDER BY '
+@keyid+N
' DESC '
IF
ISNULL
(@fields,N
''
)=N
''
SET
@fields=N
'*'
IF
ISNULL
(@condition,N
''
)=N
''
SET
@condition=N
'1=1'
DECLARE
@sql NVARCHAR(4000)
SET
@sql=N
'SELECT @totalRecord=COUNT(*)'
+N
' FROM '
+@tablename
+N
' WHERE '
+@condition
EXEC
sp_executesql @sql,N
'@totalRecord bigint OUTPUT'
,@totalRecord
OUTPUT
IF(@pageindex=1)
BEGIN
SET
@sql=N
'SELECT TOP '
+STR(@pagesize)+N
' '
+@fields+N
' FROM '
+@tablename+N
' WHERE '
+@condition+N
' '
+@orderstr
EXEC
(@sql)
END
ELSE
BEGIN
DECLARE
@StartRecord
INT
SET
@StartRecord = (@pageindex-1)*@pagesize + 1
SET
@sql=N
'SELECT * FROM (SELECT ROW_NUMBER() OVER ('
+ @orderstr +N
') AS rowId,'
+@fields+N
' FROM '
+ @tablename+N
') AS T WHERE rowId>='
+STR(@StartRecord)+N
' and rowId<='
+STR(@StartRecord + @pagesize - 1)
EXEC
(@sql)
END
GO
CREATE
PROC [dbo].[proc_select_page_top]
@pageindex
INT
=1,
@pagesize
INT
=10,
@tablename
VARCHAR
(50)=
''
,
@fields
VARCHAR
(1000)=
''
,
@keyid
VARCHAR
(50)=
''
,
@condition NVARCHAR(1000)=
''
,
@orderstr
VARCHAR
(500),
@totalRecord
BIGINT
OUTPUT
AS
IF
ISNULL
(@orderstr,N
''
)=N
''
SET
@orderstr=N
' ORDER BY '
+@keyid+N
' DESC '
IF
ISNULL
(@fields,N
''
)=N
''
SET
@fields=N
'*'
IF
ISNULL
(@condition,N
''
)=N
''
SET
@condition=N
'1=1'
DECLARE
@sql NVARCHAR(4000)
SET
@sql=N
'SELECT @totalRecord=COUNT(*)'
+N
' FROM '
+@tablename
+N
' WHERE '
+@condition
EXEC
sp_executesql @sql,N
'@totalRecord INT OUTPUT'
,@totalRecord
OUTPUT
IF(@pageindex=1)
BEGIN
SET
@sql=N
'SELECT TOP '
+STR(@pagesize)+N
' '
+@fields+N
' FROM '
+@tablename+N
' WHERE '
+@condition+N
' '
+@orderstr
EXEC
(@sql)
END
ELSE
BEGIN
SET
@sql=N
'SELECT TOP '
+STR(@pagesize)+N
' '
+@fields+N
' FROM '
+@tablename+N
' WHERE '
+@keyid
+N
' NOT IN(SELECT TOP '
+STR((@pageindex-1)*@pagesize)+N
' '
+@keyid+N
' FROM '
+@tablename+N
' WHERE '
+@condition+N
' '
+@orderstr+N
') AND '
+@condition+N
' '
+@orderstr
EXEC
(@sql)
END
GO
相关推荐
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
以下是一个简单的C#结合SQL Server的分页存储过程的例子: 1. 创建存储过程: 在SQL Server Management Studio中,编写如下的存储过程,这个过程接收两个参数:@PageIndex表示当前页号,@PageSize表示每页显示的...
本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数:当前页码(PageNumber)和每页记录数(PageSize)。...
SQL Server 提供了多种方式进行分页查询,其中一种方式是通过存储过程来实现。 #### 存储过程分页概述 存储过程是一种预先编译好的 SQL 代码块,存储在 SQL Server 数据库中。使用存储过程进行分页查询的好处包括:...
总结,SQL Server的分页存储过程可以帮助我们高效地处理分页查询。正确地设计和调用这些存储过程,可以提升应用的性能并提供更好的用户体验。在实际开发中,根据项目的具体需求,可以对存储过程进行适当的修改和扩展...
本文将深入探讨如何利用SQL Server的存储过程实现高效的大数据分页查询。 首先,理解分页查询的基本概念。分页查询是指从海量数据中按指定的页码和每页大小获取数据,通常用于网页展示或报表生成。在SQL Server中,...
SQL Server 分页存储过程是一种在数据库中实现高效数据分页查询的方法。在大型数据集的展示中,分页是必不可少的,因为它允许用户逐步浏览数据,而不是一次性加载所有记录,从而提高用户体验并减少服务器负载。以下...
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
sql分页存储过程 CREATE PROCEDURE [dbo].[dbTab_PagerHelper] @TableName VARCHAR(50), --表名 @FieldNames VARCHAR(1000), --显示列名,如果是全部字段则为* @WhereString VARCHAR(256) = NULL, --查询条件 ...
总结,通用的存储过程SQL分页查询语句是数据库开发中的重要工具,它结合了存储过程的复用性和SQL的灵活性,可以高效地处理大数据量的分页查询。通过选择适当的分页方法和优化策略,我们可以进一步提升查询性能,提供...
通用sql分页存储过程,提供12参数可供选择。其中,提供两种分页方案被选择和相关排序方式,支持自定义查询、自定义排序等
SQL 通用 分页 存储 过程 完整代码
根据提供的文件信息,本文将详细解释一种通用的SQL分页存储过程实现方法,该方法能够适应不同的表结构、字段数量,并支持自定义排序字段与筛选条件。 ### SQL 分页存储过程解析 #### 标题说明 标题“sql分页存储...
Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种高效且灵活的方式。本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在...
传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。...
对SQL分页的万能存储过程,很全面的分析和描述,请大家支持
下面是三种SQL分页查询的存储过程代码: 1. 根据MAX(MIN)ID的分页查询 该方法使用MAX或MIN函数来获取当前页的数据。存储过程代码如下: ```sql CREATE PROC [dbo].[proc_select_id] @pageindex int=1,--当前页数 ...
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术
这是我整理的,两种不同方式的分页方法,之前我做过测试的,如果数据量很大的话,然后对数据速度要求比较快的话,还是用sql存储过程分页比较好