AspNetPager分页控件存储过程
存储 过程 分页 控件 AspNetPager
2023-06-13 09:14:11 时间
SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO
ALTERPROCEDUREusp_PagingLarge
@TableNamesVARCHAR(200),--表名,可以是多个表,但不能用别名
@PrimaryKeyVARCHAR(100),--主键,可以为空,但@Order为空时该值不能为空
@FieldsVARCHAR(200),--要取出的字段,可以是多个表的字段,可以为空,为空表示select*
@PageSizeINT,--每页记录数
@CurrentPageINT,--当前页,0表示第1页
@FilterVARCHAR(200)="",--条件,可以为空,不用填where
@GroupVARCHAR(200)="",--分组依据,可以为空,不用填groupby
@OrderVARCHAR(200)=""--排序,可以为空,为空默认按主键升序排列,不用填orderby
AS
BEGIN
DECLARE@SortColumnVARCHAR(200)
DECLARE@OperatorCHAR(2)
DECLARE@SortTableVARCHAR(200)
DECLARE@SortNameVARCHAR(200)
IF@Fields=""
SET@Fields="*"
IF@Filter=""
SET@Filter="WHERE1=1"
ELSE
SET@Filter="WHERE"+@Filter
IF@Group<>""
SET@Group="GROUPBY"+@Group
IF@Order<>""
BEGIN
DECLARE@pos1INT,@pos2INT
SET@Order=REPLACE(REPLACE(@Order,"asc","ASC"),"desc","DESC")
IFCHARINDEX("DESC",@Order)>0
IFCHARINDEX("ASC",@Order)>0
BEGIN
IFCHARINDEX("DESC",@Order)<CHARINDEX("ASC",@Order)
SET@Operator="<="
ELSE
SET@Operator=">="
END
ELSE
SET@Operator="<="
ELSE
SET@Operator=">="
SET@SortColumn=REPLACE(REPLACE(REPLACE(@Order,"ASC",""),"DESC",""),"","")
SET@pos1=CHARINDEX(",",@SortColumn)
IF@pos1>0
SET@SortColumn=SUBSTRING(@SortColumn,1,@pos1-1)
SET@pos2=CHARINDEX(".",@SortColumn)
IF@pos2>0
BEGIN
SET@SortTable=SUBSTRING(@SortColumn,1,@pos2-1)
IF@pos1>0
SET@SortName=SUBSTRING(@SortColumn,@pos2+1,@pos1-@pos2-1)
ELSE
SET@SortName=SUBSTRING(@SortColumn,@pos2+1,LEN(@SortColumn)-@pos2)
END
ELSE
BEGIN
SET@SortTable=@TableNames
SET@SortName=@SortColumn
END
END
ELSE
BEGIN
SET@SortColumn=@PrimaryKey
SET@SortTable=@TableNames
SET@SortName=@SortColumn
SET@Order=@SortColumn
SET@Operator=">="
END
DECLARE@typevarchar(50)
DECLARE@precint
SELECT@type=t.name,@prec=c.prec
FROMsysobjectso
JOINsyscolumnscono.id=c.id
JOINsystypestonc.xusertype=t.xusertype
WHEREo.name=@SortTableANDc.name=@SortName
IFCHARINDEX("char",@type)>0
SET@type=@type+"("+CAST(@precASvarchar)+")"
DECLARE@TopRowsINT
SET@TopRows=@PageSize*@CurrentPage+1
PRINT@type
DECLARE@sqlNVARCHAR(4000)
SET@Sql="DECLARE@SortColumnBegin"+@type+"
SETROWCOUNT"+Cast(@TopRowsasVARCHAR(10))+"SELECT@SortColumnBegin="+
@SortColumn+"FROM"+@TableNames+""+@Filter+""+@Group+"ORDERBY"+@Order+"
SETROWCOUNT"+CAST(@PageSizeASVARCHAR(10))+"
SELECT"+@Fields+"FROM"+@TableNames+""+@Filter+"AND"+@SortColumn+""+@Operator+"@SortColumnBegin"+ISNULL(@Group,"")+"ORDERBY"+@Order+""
--Print(@sql)
Exec(@sql)
END
GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
相关文章
- 关于数据库存储过程分页DatagridView BindingNavigator 控件的详细实现
- 创建/更新存储过程
- 【数据库原理与运用|MySQL】MySQL存储过程(详细超全)
- MSSQL分页存储过程完整示例(支持多表分页存储)
- 五种SQL Server分页存储过程的方法及性能比较
- SqlServer 2000、2005分页存储过程整理第1/3页
- SQL Server 分页查询通用存储过程(只做分页查询用)
- PL/SQL中编写Oracle数据库分页的存储过程
- Oracle存储过程循环语法实例分析
- Oracle存储过程游标用法分析
- SQLServer存储过程实现单条件分页
- MySQL导入:存储过程快速操作(mysql导入存储过程)
- 深入MySQL中查看存储过程详情(mysql查看存储过程)
- 简单操作:调用Oracle中存储过程的方法(调用oracle存储过程)
- MySQL存储过程实现分页的巧妙方式(mysql存储分页)
- 使用Oracle存储过程:一种灵活的调用方式.(调用oracle存储过程)
- 学习使用Oracle存储过程:从入门到精通(调用oracle存储过程)
- 利用Oracle存储过程实现双向传值(oracle使用存储传值)
- Oracle存储过程修改实践(oracle 修改存过)
- 邹建的分页存储过程改了一下
- 一个比较实用的大数据量分页存储过程
- 分页的存储过程
- [数据库]通用分页存储过程
- asp.net结合mysql存储过程进行分页代码
- asp.net结合aspnetpager使用SQL2005的存储过程分页
- sqlserver千万数量级分页存储过程代码
- SQLServer的通用分页存储过程未使用游标,速度更快!
- sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- sql存储过程分页代码支持亿万庞大数据量
- 一个Asp.Net的显示分页方法附加实体转换和存储过程带源码下载
- Datalist控件使用存储过程来分页实现代码
- C#基于数据库存储过程的AJAX分页实例