zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

一个分页存储过程代码

存储代码 一个 过程 分页
2023-06-13 09:14:06 时间

复制代码代码如下:


------------------------------------
--用途:分页存储过程(对有主键的表效率极高)
--说明:
------------------------------------
ALTERPROCEDURE[UP_GetRecordByPage]
@tblNamevarchar(255),--表名
@fldNamevarchar(255),--主键字段名
@PageSizeint=10,--页尺寸
@PageIndexint=1,--页码
@IsReCountbit=0,--返回记录总数,非0值则返回
@OrderTypebit=0,--设置排序类型,非0值则降序
@strWherevarchar(1000)=""--查询条件(注意:不要加where)
AS
declare@strSQLvarchar(6000)--主语句
declare@strTmpvarchar(100)--临时变量
declare@strOrdervarchar(400)--排序类型
if@OrderType!=0
begin
set@strTmp="<(selectmin"
set@strOrder="orderby["+@fldName+"]desc"
end
else
begin
set@strTmp=">(selectmax"
set@strOrder="orderby["+@fldName+"]asc"
end
set@strSQL="selecttop"+str(@PageSize)+"*from["
+@tblName+"]where["+@fldName+"]"+@strTmp+"(["
+@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"["
+@fldName+"]from["+@tblName+"]"+@strOrder+")astblTmp)"
+@strOrder
if@strWhere!=""
set@strSQL="selecttop"+str(@PageSize)+"*from["
+@tblName+"]where["+@fldName+"]"+@strTmp+"(["
+@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"["
+@fldName+"]from["+@tblName+"]where"+@strWhere+""
+@strOrder+")astblTmp)and"+@strWhere+""+@strOrder
if@PageIndex=1
begin
set@strTmp=""
if@strWhere!=""
set@strTmp="where"+@strWhere
set@strSQL="selecttop"+str(@PageSize)+"*from["
+@tblName+"]"+@strTmp+""+@strOrder
end
if@IsReCount!=0
set@strSQL="selectcount(*)asTotalfrom["+@tblName+"]"+"where"+@strWhere
exec(@strSQL)