mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

三种SQL分页查询的存储过程代码

来源:网络整理  作者:网络  发布时间:2020-12-08 12:54
三种SQL分页查询的存储过程代码,需要的朋友可以参考下。...
CREATE PROC [dbo].[proc_select_id]
ELSE
IF(@pageindex=1)
--BEGIN
BEGIN
EXEC(@sql)

DECLARE @sql NVARCHAR(4000)
@orderstr VARCHAR(500),--排序条件
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
GO
--根据TOP ID
CREATE PROC [dbo].[proc_select_page_top]
EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT
@tablename VARCHAR(50)='',--表名
BEGIN
--IF(@totalRecord IS NULL)
SET @operatestr='MAX'
EXEC(@sql)
+N'(SELECT '+@operatestr+N'('+@keyid+N') FROM '+@tablename+N' WHERE '+@keyid
BEGIN

SET @sql=N'SELECT @totalRecord=COUNT(*)'
AS
DECLARE @operatestr CHAR(3),@comparestr CHAR(1)
@pageindex INT=1,--当前页数
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
+N' FROM '+@tablename
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
--IF(@totalRecord IS NULL)
GO
CREATE PROC [dbo].[proc_select_page_row]
@pageindex INT=1,--当前页数
@keyid VARCHAR(50)='',--主键
+N' FROM '+@tablename
@condition NVARCHAR(1000)='',--查询条件
IF(@pageindex=1)
@fields VARCHAR(1000)='',--查询的字段集合
@orderstr VARCHAR(500),--排序条件
DECLARE @sql NVARCHAR(4000)
@pageindex int=1,--当前页数
BEGIN
@pagesize INT=10,--每页大小
--END
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
EXEC(@sql)
END
SET @comparestr='<'
-- BEGIN

@keyid VARCHAR(50)='',--主键
+N' WHERE '+@condition
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid
END
@pagesize INT=10,--每页大小


SET @comparestr='>'
@fields VARCHAR(1000)='*',--查询的字段集合
AS
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
@pagesize int=10,--每页大小
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
--BEGIN
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
ELSE
@orderstr VARCHAR(500),--排序条件

BEGIN
--END
BEGIN
@totalRecord BIGINT OUTPUT--总记录数
--根据MAX(MIN)ID
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
SET @sql=N'SELECT top '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid+@comparestr
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
@totalRecord BIGINT OUTPUT--总记录数
+N' IN (SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '+@tablename+N' WHERE '
BEGIN
END
@condition NVARCHAR(1000)='',--查询条件
END
IF(@orderstr<>'')
EXEC(@sql)
+N' NOT IN(SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '
@condition NVARCHAR(1000)='',--查询条件

复制代码 代码如下:

SET @StartRecord = (@pageindex-1)*@pagesize + 1
END
ELSE
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
@fields VARCHAR(1000)='',--查询的字段集合
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)
+N' WHERE '+@condition
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
IF(@pageindex=1)
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
DECLARE @StartRecord INT
@keyid VARCHAR(50)='',--主键

-- IF @totalRecord IS NULL
@tablename VARCHAR(50)='',--表名
BEGIN
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
EXEC(@sql)
SET @sql=N'SELECT @totalRecord=COUNT(*)'
SET @operatestr='MIN'
@totalRecord BIGINT OUTPUT--总记录数
@tablename VARCHAR(50)='',--表名
GO
SET @sql=N'SELECT @totalRecord=COUNT(*)'
+@condition+N' '+@orderstr+N')) AND '+@condition+N' '+@orderstr
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
+N' WHERE '+@condition
IF(CHARINDEX('desc',LOWER(@orderstr))<>0)
END
+N' FROM '+@tablename
DECLARE @sql NVARCHAR(4000)
--END
END
+@tablename+N' WHERE '+@condition+N' '+@orderstr+N') AND '+@condition+N' '+@orderstr
EXEC(@sql)
--根据ROW_NUMBER() OVER
END
AS

相关热词: 分页

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/mssql/1432.shtml

最新文章
sql server 关于设置null的一 sql server 关于设置null的一

时间:2020-12-28

详解SQL游标的用法 详解SQL游标的用法

时间:2020-12-27

vs code连接sql server数据库步 vs code连接sql server数据库步

时间:2020-12-27

图书管理系统的sqlserver数 图书管理系统的sqlserver数

时间:2020-12-25

详解SQL 通配符 详解SQL 通配符

时间:2020-12-25

sql四大排名函数之ROW_NUM sql四大排名函数之ROW_NUM

时间:2020-12-25

SQLServer数据库处于恢复挂 SQLServer数据库处于恢复挂

时间:2020-12-24

Win10 64位安装个人版SQL20 Win10 64位安装个人版SQL20

时间:2020-12-24

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

三种SQL分页查询的存储过程代码

2020-12-08 编辑:网络

CREATE PROC [dbo].[proc_select_id]
ELSE
IF(@pageindex=1)
--BEGIN
BEGIN
EXEC(@sql)

DECLARE @sql NVARCHAR(4000)
@orderstr VARCHAR(500),--排序条件
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
GO
--根据TOP ID
CREATE PROC [dbo].[proc_select_page_top]
EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT
@tablename VARCHAR(50)='',--表名
BEGIN
--IF(@totalRecord IS NULL)
SET @operatestr='MAX'
EXEC(@sql)
+N'(SELECT '+@operatestr+N'('+@keyid+N') FROM '+@tablename+N' WHERE '+@keyid
BEGIN

SET @sql=N'SELECT @totalRecord=COUNT(*)'
AS
DECLARE @operatestr CHAR(3),@comparestr CHAR(1)
@pageindex INT=1,--当前页数
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
+N' FROM '+@tablename
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
--IF(@totalRecord IS NULL)
GO
CREATE PROC [dbo].[proc_select_page_row]
@pageindex INT=1,--当前页数
@keyid VARCHAR(50)='',--主键
+N' FROM '+@tablename
@condition NVARCHAR(1000)='',--查询条件
IF(@pageindex=1)
@fields VARCHAR(1000)='',--查询的字段集合
@orderstr VARCHAR(500),--排序条件
DECLARE @sql NVARCHAR(4000)
@pageindex int=1,--当前页数
BEGIN
@pagesize INT=10,--每页大小
--END
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
EXEC(@sql)
END
SET @comparestr='<'
-- BEGIN

@keyid VARCHAR(50)='',--主键
+N' WHERE '+@condition
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid
END
@pagesize INT=10,--每页大小


SET @comparestr='>'
@fields VARCHAR(1000)='*',--查询的字段集合
AS
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
@pagesize int=10,--每页大小
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
--BEGIN
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
ELSE
@orderstr VARCHAR(500),--排序条件

BEGIN
--END
BEGIN
@totalRecord BIGINT OUTPUT--总记录数
--根据MAX(MIN)ID
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
SET @sql=N'SELECT top '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid+@comparestr
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
@totalRecord BIGINT OUTPUT--总记录数
+N' IN (SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '+@tablename+N' WHERE '
BEGIN
END
@condition NVARCHAR(1000)='',--查询条件
END
IF(@orderstr<>'')
EXEC(@sql)
+N' NOT IN(SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '
@condition NVARCHAR(1000)='',--查询条件

复制代码 代码如下:

SET @StartRecord = (@pageindex-1)*@pagesize + 1
END
ELSE
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
@fields VARCHAR(1000)='',--查询的字段集合
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)
+N' WHERE '+@condition
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
IF(@pageindex=1)
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
DECLARE @StartRecord INT
@keyid VARCHAR(50)='',--主键

-- IF @totalRecord IS NULL
@tablename VARCHAR(50)='',--表名
BEGIN
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
EXEC(@sql)
SET @sql=N'SELECT @totalRecord=COUNT(*)'
SET @operatestr='MIN'
@totalRecord BIGINT OUTPUT--总记录数
@tablename VARCHAR(50)='',--表名
GO
SET @sql=N'SELECT @totalRecord=COUNT(*)'
+@condition+N' '+@orderstr+N')) AND '+@condition+N' '+@orderstr
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
+N' WHERE '+@condition
IF(CHARINDEX('desc',LOWER(@orderstr))<>0)
END
+N' FROM '+@tablename
DECLARE @sql NVARCHAR(4000)
--END
END
+@tablename+N' WHERE '+@condition+N' '+@orderstr+N') AND '+@condition+N' '+@orderstr
EXEC(@sql)
--根据ROW_NUMBER() OVER
END
AS

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/mssql/1432.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页