存储过程学习

Declare @Record Int
Declare @Page Int
Exec GetAlbums 0,10,@Record,@Page,''
Select * From Album

Alter PROCEDURE GetAlbums   
     @PageIndex INT,--第几页   
     @PageSize  INT,--每页多少条   
     @RecordCount INT OUT,--总条数   
     @PageCount INT OUT,--总页数   
     @WhereStr NVARCHAR (500)=''--查询条件   
AS   
DECLARE @tsql NVARCHAR(2000)   
IF @WhereStr = ''   
 SET @WhereStr = ' 1=1'   
SET @tsql=N'select @RecordCount = count(*) from album where ' + @WhereStr   
 exec sp_executesql @tsql,N'@RecordCount int output',@RecordCount output   
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)    
DECLARE @SQLSTR NVARCHAR(1000)   
IF @PageIndex = 0 OR @PageCount <= 1   
   SET @SQLSTR =N'SELECT TOP '+STR( @PageSize )+   
'   Id,User_Id,Name,Depiction,Photo_Path,(Case IsThrough When 0 Then ''否'' Else ''通过'' End) as StrIsThrough,   
   (Case IsCommend When 0 Then ''否'' Else ''是'' End) as StrIsCommend,AddTime,ServerUrl   
    FROM Album  where ' + @WhereStr +'  ORDER BY id DESC'   
ELSE IF @PageIndex = @PageCount - 1    
   SET @SQLSTR =N' SELECT *   
   FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+   
'   Id,User_Id,Name,Depiction,Photo_Path,(Case IsThrough When 0 Then ''否'' Else ''通过'' End) as StrIsThrough,   
   (Case IsCommend When 0 Then ''否'' Else ''是'' End) as StrIsCommend,AddTime,ServerUrl   
    FROM Album  where ' + @WhereStr +'  ORDER BY Id ASC ) TempTable  ORDER BY id DESC'   
ELSE             
     SET @SQLSTR =N' SELECT TOP  '+STR( @PageSize )+' *   
 FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+   
'   Id,User_Id,Name,Depiction,Path,Photo_Path,(Case IsThrough When 0 Then ''否'' Else ''通过'' End) as StrIsThrough,   
   (Case IsCommend When 0 Then ''否'' Else ''是'' End) as StrIsCommend,AddTime,ServerUrl   
    FROM Album  where ' + @WhereStr +'  ORDER BY id ASC )  TempTable ORDER BY id DESC'   
EXEC (@SQLSTR)   
--print @SQLSTR    
--------------------------------------------------   
  Go

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值