Create procedure pagination3
(
@ Tblname varchar (255), -- table name
@ Strgetfields varchar (1000), -- the column to be returned
@ Fldname varchar (255), -- Name of the sorted Field
@ Pagesize int, -- page size
@ Pageindex int, -- page number
@ Docount bit, -- total number of records returned. If the value is not 0
@ Ordertype bit, -- set the sorting type. If the value is not 0, the sorting type is descending.
@ Strwhere varchar (1500) -- Query condition (Note: Do not add where)
)
As
Declare @ strsql varchar (5000) -- subject sentence
Declare @ strtmp varchar (110) -- Temporary Variable
Declare @ strorder varchar (400) -- sort type
If @ docount! = 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 @ ordertype! = 0
Begin
Set @ strtmp = "<(select Min"
Set @ strorder = "order by [" + @ fldname + "] DESC"
End
Else
Begin
Set @ strtmp = "> (select Max"
Set @ strorder = "order by [" + @ fldname + "] ASC"
End
If @ pageindex = 1
Begin
If @ strwhere! =''
Set @ strsql = "select top" + STR (@ pagesize) + "" + @ strgetfields + "from [" + @ tblname + "] Where" + @ strwhere + "" + @ strorder
Else
Set @ strsql = "select top" + STR (@ pagesize) + "" + @ strgetfields + "from [" + @ tblname + "]" + @ strorder
End
Else
Begin
Set @ strsql = "select top" + STR (@ pagesize) + "" + @ strgetfields + "from [" + @ tblname + "] Where [" + @ fldname + "]" + @ strtmp + "([" + @ fldname +" ]) from (select top "+ STR (@ PageIndex-1) * @ pagesize) + "[" + @ fldname + "] from [" + @ tblname + "]" + @ strorder + ") as tbltmp)" + @ strorder
If @ strwhere! =''
Set @ strsql = "select top" + STR (@ pagesize) + "" + @ strgetfields + "from [" + @ tblname + "] Where [" + @ fldname + "]" + @ strtmp + "([" + @ fldname +" ]) from (select top "+ STR (@ PageIndex-1) * @ pagesize) + "[" + @ fldname + "] from [" + @ tblname + "] Where" + @ strwhere + "" + @ strorder + ") as tbltmp) and "+ @ strwhere +" "+ @ strorder
End
End
Exec (@ strsql)
Go