Code
Create Procedure [ DBO ] . [ Getpagerrowover ]
@ Pageindex Int = 1 ,
@ Pagesize Int = 10 ,
@ Tables Nvarchar ( 1000 ) = Null ,
@ Fields Nvarchar ( 2000 ) = ' * ' ,
@ Where Nvarchar ( 2000 ) = Null ,
@ Groupby Nvarchar ( 2000 ) = Null ,
@ Orderby Nvarchar ( 1000 ) = Null ,
@ Returncount Int = 0 Output
As
Begin
Set Nocount On ;
Declare @ SQL Nvarchar ( 4000 ), @ Startrowindex Int , @ Maximumrows Int ;
Declare @ Strwhere Nvarchar ( 2000 )
Declare @ Strgroupby Nvarchar ( 2000 )
Set @ Startrowindex = ( @ Pageindex - 1 ) * @ Pagesize ;
Set @ Maximumrows = @ Pagesize ;
If @ Where Is Not Null And @ Where ! = ''
Begin
Set @ Strwhere = ' Where ' + @ Where
End
Else
Begin
Set @ Strwhere = ''
End
If @ Groupby Is Not Null And @ Groupby ! = ''
Begin
Set @ Strgroupby = ' Group ' + @ Groupby
End
Else
Begin
Set @ Strgroupby = ''
End
Set @ SQL = ' Select ' + @ Fields + ' From (select ' + @ Fields + ' , Row_number () over (order ' + @ Orderby + ' ) As rownum from ' + @ Tables + @ Strwhere + @ Strgroupby + ' ) As tmptable where rownum> ' + Convert ( Nvarchar ( 10 ), @ Startrowindex ) + ' And rownum <= ( ' + Convert ( Nvarchar ( 10 ), @ Startrowindex ) + ' + ' + Convert ( Nvarchar ( 10 ), @ Maximumrows ) + ' ) '
Exec ( @ SQL )
Print @ SQL
Set @ SQL = ' Select @ returncount = count (*) from ' + @ Tables + @ Strwhere
Exec Sp_executesql @ SQL , N ' @ Returncount int output ' , @ Returncount Output
Print @ SQL
End