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 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
sql分页的存储过程sql分页的存储过程sql分页的存储过程sql分页的存储过程sql分页的存储过程sql分页的存储过程
SqlServer 分页 存储过程
很好地的小例子 可以很好地清楚怎么用sql存储过程实现分页,希望对大家有很好的帮助
千万级数据分页查询存储过程SQLServer 有实例
sql分页存储过程 CREATE PROCEDURE [dbo].[dbTab_PagerHelper] @TableName VARCHAR(50), --表名 @FieldNames VARCHAR(1000), --显示列名,如果是全部字段则为* @WhereString VARCHAR(256) = NULL, --查询条件 ...
sqlserver 分页调用的存储过程 t-sql 语句
想在存储过程中分页的朋友可以使用, sqlserver存储过程万能分页
通用sql分页存储过程,提供12参数可供选择。其中,提供两种分页方案被选择和相关排序方式,支持自定义查询、自定义排序等
SQL 通用 分页 存储 过程 完整代码
对SQL分页的万能存储过程,很全面的分析和描述,请大家支持
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术
这是我整理的,两种不同方式的分页方法,之前我做过测试的,如果数据量很大的话,然后对数据速度要求比较快的话,还是用sql存储过程分页比较好
通用的存储过程sql分页查询语句,节约您的时间....
sqlserver+group by分组查询分页存储过程
3个高效率sql分页存储过程,1个参数最少的分页存储过程
C# SQL2005 分页排序存储过程 C# SQL2005 分页排序存储过程
sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程