ALTER procedure [dbo].[CMS_GetCMSLog]
@PageIndex int = 1,
@PageSize int = 15,
@Where varchar(400) = '',
@OrderBy varchar(50) = 'log_id',
@OutPut int output
as
Begin
Declare @strSql varchar(500)
DECLARE @SQL NVARCHAR(1000)
DECLARE @R BIGINT
SET @SQL= N'select @R=count(*) from cms_log WHERE 1=1 '+@Where
EXEC SP_EXECUTESQL @SQL, N' @R BIGINT OUTPUT', @R OUTPUT
SET @OutPut= @R
--set @OutPut = @@RowCount
if(@PageIndex =1)
Begin
set @strSql='select top '+str(@PageSize)+' log_id,log_date,log_user,log_activity,log_detail,log_item,user_name from cms_log LEFT JOIN cms_user ON log_user=user_id WHERE 1=1 '+@Where+' order by '+@OrderBy+' Desc'
End
Else
Begin
set @strSql='select top '+str(@PageSize)+' log_id,log_date,log_user,log_activity,log_detail,log_item,user_name from cms_log LEFT JOIN cms_user ON log_user=user_id where ('+@OrderBy
+' < ( select Min('+@OrderBy+') from ( select top '+str(@PageSize*(@PageIndex-1))+' * from cms_log LEFT JOIN cms_user ON log_user=user_id order by '
+@OrderBy+' Desc) as tempTable)) order by '+ @OrderBy+' Desc'
End
exec(@strSql)
End