Create
PROCEDURE
[dbo].[GetRecordFromPage]
@tblName
varchar
(255),
@fldName
varchar
(255)=
'AutoID'
,
@PageSize
int
= 10,
@PageIndex
int
= 1,
@IsCount
bit
= 0,
@OrderType
bit
= 0,
@strWhere
varchar
(1000) =
''
,
@RecordCount
int
output
AS
declare
@ss nvarchar(4000)
if @strWhere !=
''
set
@ss =
'select @RecordCount=count(*) from '
+ @tblName +
' where '
+ @strWhere
else
set
@ss =
'select @RecordCount=count(*) from '
+ @tblName
exec
sp_executesql @ss,N
'@RecordCount Int out'
,@RecordCount
OutPut
declare
@strSQL
varchar
(6000)
declare
@strTmp
varchar
(500)
declare
@strOrder
varchar
(400)
declare
@strOrderw
varchar
(400)
set
@strOrderw=
' order by ['
+ @fldName +
'] '
if @IsCount != 0
begin
if @strWhere !=
''
set
@strSQL =
'select count(*) as Total from '
+ @tblName +
' where '
+ @strWhere
else
set
@strSQL =
'select count(*) as Total from '
+ @tblName
end
else
begin
if @PageIndex = 1
begin
set
@strTmp =
''
if @OrderType != 0
begin
set
@strOrder =
' order by ['
+ @fldName +
'] desc'
end
else
begin
set
@strOrder =
' order by ['
+ @fldName +
'] asc'
end
if @strWhere !=
''
set
@strTmp =
' where '
+ @strWhere
set
@strSQL =
'select top '
+
cast
(@PageSize
as
varchar
)+
' * from '
+@tblName+@strTmp+
' '
+@strOrder
end
else
begin
declare
@topTmp
varchar
(100)
if @OrderType != 0
begin
set
@strTmp =
'>=(select min'
set
@strOrder =
' order by ['
+ @fldName +
'] desc'
set
@topTmp=
cast
((@PageIndex*@PageSize)
as
varchar
)
end
else
begin
set
@strTmp =
'>(select max'
set
@strOrder =
' order by ['
+ @fldName +
'] asc'
set
@topTmp=
cast
((@PageIndex*@PageSize-@PageSize)
as
varchar
)
end
if @strWhere !=
''
set
@strSQL =
'select top '
+ str(@PageSize) +
' * from '
+ @tblName +
' where ['
+ @fldName +
']'
+ @strTmp +
'(['
+ @fldName +
']) from (select top '
+@topTmp+
' ['
+ @fldName +
'] from '
+ @tblName +
' where '
+ @strWhere +
' '
+ @strOrder +
') as tblTmp) and '
+ @strWhere +
' '
+ @strOrderw
else
set
@strSQL =
'select top '
+ str(@PageSize) +
' * from '
+ @tblName +
' where ['
+ @fldName +
']'
+ @strTmp +
'(['
+ @fldName +
']) from (select top '
+@topTmp+
' ['
+ @fldName +
'] from '
+ @tblName + @strOrder +
') as tblTmp)'
+ @strOrderw
end
end
exec
(@strSQL)