Database paging-implemented using Stored Procedures

Source: Internet
Author: User

Create procedure sp_pagination -- paging Stored Procedure (applicable when millions of pages have primary keys)
(
@ Fieldlist varchar (500), -- display the Field List
@ Tablename varchar (50), -- query the table name
@ ID varchar (50), -- Id field
@ Currentpage int, -- current page
@ Pagesize int, -- how many records are displayed on each page
@ Likelist varchar (8000), -- List of judgment Conditions
@ Orderlist varchar (1000), -- List of sorting statements
@ Recordcount int output -- total number of returned records
)
As
Declare @ SQL nvarchar (4000) -- subject sentence
Declare @ recordtotal int -- returns the total number of records in the current query result.
Declare @ strtmp varchar (1000) -- Temporary Variable
Declare @ strorder varchar (1000) -- sort type
Declare @ order int -- 0 in descending order, 1 in ascending order, determined by @ orderlist
Set @ SQL = "select @ reccount = count ([" + @ ID + "]) from" + @ tablename + "" + @ likelist + "" -- SQL query statement
Execute sp_executesql @ SQL, n' @ reccount int output', @ reccount = @ recordcount output -- get the total number of records
If substring (ltrim (replace (@ orderlist, "order by", ""), @ ID, ""), 1, 4) = "DESC"
Begin
Set @ order = 0 -- descending order
End
Else
Begin
Set @ order = 1 -- Ascending
End
If @ order = 0
Begin
Set @ strtmp = "<(select Min"
Set @ strorder = "order by [" + @ ID + "] DESC"
End
Else
Begin
Set @ strtmp = "> (select Max"
Set @ strorder = "order by [" + @ ID + "] ASC"
End
Set @ SQL = "select top" + STR (@ pagesize) + "" + @ fieldlist + "from [" + @ tablename + "] Where [" + @ ID + "]" + @ strtmp + "([" + @ ID +" ]) from (select top "+ STR (@ currentpage-1) * @ pagesize) + "[" + @ ID + "] from [" + @ tablename + "]" + @ strorder + ") as tbltmp)" + @ strorder
Set @ likelist = Replace (@ likelist, "where ","")
If @ likelist! =''
Begin
Set @ SQL = "select top" + STR (@ pagesize) + "" + @ fieldlist + "from [" + @ tablename + "] Where [" + @ ID + "]" + @ strtmp + "([" + @ ID +" ]) from (select top "+ STR (@ currentpage-1) * @ pagesize) + "[" + @ ID + "] from [" + @ tablename + "] Where" + @ likelist + "" + @ strorder + ") as tbltmp) and "+ @ likelist +" "+ @ strorder
End
If @ currentpage = 1
Begin
Set @ strtmp = ""
If @ likelist! =''
Set @ strtmp = "where" + @ likelist
Set @ SQL = "select top" + STR (@ pagesize) + "" + @ fieldlist + "from [" + @ tablename + "]" + @ strtmp + "" + @ strorder
End
Exec (@ SQL)
Go

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.