数据库分页存储过程(5)

ExpandedBlockStart.gifContractedBlock.gif/**//*
InBlock.gif******************************************************************************************
InBlock.gif  过程名称:Common_Percent_Pagination
InBlock.gif  过程功能:
InBlock.gif  代码设计:小朱(zsy619@163.com)
InBlock.gif  设计时间:2005-11-3 13:58:26
InBlock.gif******************************************************************************************
InBlock.gif  功能描述:
InBlock.gif
InBlock.gif******************************************************************************************
InBlock.gif  如果您修改了我的程序,请留下修改记录,以便对程序进行维护,谢谢  !!!
InBlock.gif==========================================================================================
InBlock.gif  修改人            修改时间                修改原因
InBlock.gif------------------------------------------------------------------------------------------
InBlock.gif
InBlock.gif==========================================================================================
InBlock.gif
InBlock.gif******************************************************************************************
InBlock.gif  备注:
InBlock.gif*****************************************************************************************
ExpandedBlockEnd.gif
*/

None.gif
Create Procedure [dbo].[Common_Percent_Pagination]
None.gif    
@TBName NVARCHAR(255) ,
None.gif    
@SQL nVARCHAR(4000),    --不带排序语句的SQL语句
None.gif
    @Page int,              --页码
None.gif
    @RecsPerPage int,       --每页容纳的记录数
None.gif
    @ID VARCHAR(255),       --需要排序的不重复的ID号
None.gif
    @Sort VARCHAR(255) ,     --排序字段及规则
None.gif
    @PageCount INT OUTPUT          --总页数
None.gif
AS
None.gif    
Declare @intResult Int
None.gif    
Begin Tran
None.gif    
-----------------------------------------------------------------代码设计--------------------------------------------------------------------
None.gif
    DECLARE @sql1 nvarchar(4000)
None.gif    
SET @sql1=N'SELECT @PageCount=COUNT(*)'
None.gif        
+N' FROM '+@tbname  
None.gif    
EXEC sp_executesql @sql1,N'@PageCount int OUTPUT',@PageCount OUTPUT
None.gif    
SET @PageCount=(@PageCount+@RecsPerPage-1)/@RecsPerPage
None.gif    
DECLARE @Str nVARCHAR(4000
None.gif    
SET @Str='SELECT   TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN (SELECT   TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort 
None.gif    
--PRINT @Str 
None.gif
    --EXEC sp_ExecuteSql @Str
None.gif
    --EXEC @Str
None.gif
    DECLARE @Str1 NVARCHAR(400)
None.gif    
DECLARE @Str2 NVARCHAR(400)
None.gif    
SET @Str1 = CAST(@RecsPerPage AS VARCHAR(20))
None.gif    
SET @Str2 = CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))
None.gif    
EXEC ( N'SELECT   TOP '+@Str1+ N' * FROM ('+@SQL+N') T WHERE T.'+@ID+N' NOT IN (SELECT   TOP '+@Str2+N' '+@ID+N' FROM ('+@SQL+N') T9 ORDER BY '+@Sort+N') ORDER BY '+@Sort )
None.gif    
Set @intResult = @@ROWCOUNT
None.gif    
----------------------------------------------------------------------------------------------------------------------------------------------------
None.gif
    If @@Error <> 0
None.gif    
Begin
None.gif        
RollBack Tran
None.gif        
Return -1
None.gif    
End
None.gif    
Else
None.gif    
Begin
None.gif        
Commit Tran
None.gif        
Return @intResult
None.gif    
End
None.gif
GO
None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值