資源描述:
《sqlserver分頁存儲過程(已通過驗證)》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、我從別處拷貝的代碼,但在條件判斷的位置出問題,我改動了下上傳,給大家分享!useusersgoifexists(selectnamefromsysobjectswherename='pages'andxtype='p')dropprocpagesgoCREATEPROCpages@tblNamevarchar(255),--表名@strGetFieldsvarchar(1000),--需要返回的列@fldNamevarchar(255),--排序的字段名@PageSizeint,--多少條/頁@PageIndex
2、int,--頁碼@doCountbit,--返回記錄總數(shù),0不返回,1返回@OrderTypebit,--設置排序類型,0升序,1降序@strWherevarchar(1500)--查詢條件(注意:不要加where)ASdeclare@strSQLvarchar(5000)--主語句declare@strTmpvarchar(150)--臨時變量declare@strOrdervarchar(400)--排序類型--如果@doCount傳遞過來的不是0,就執(zhí)行總數(shù)統(tǒng)計。if@doCount!=0begin--查詢
3、條件為空set@strSQL='selectcount(*)asTotalfrom'+@tblName--查詢條件不為空if@strWhere!=''set@strSQL='selectcount(*)asTotalfrom'+@tblName+'where'+@strWhereend--以下的所有代碼都是@doCount為0的情況:--如果@OrderType是1,就執(zhí)行降序,否則為升序!elsebegin--查詢條件為空set@strTmp='>(selectmax'set@strOrder='orderby
4、'+@fldName+'asc'--查詢條件不為空if@OrderType=1beginset@strTmp='<(selectmin'set@strOrder='orderby'+@fldName+'desc'end--如果是第一頁就執(zhí)行代碼,這樣會加快執(zhí)行速度if@PageIndex=1begin--查詢條件為空set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+''+@strOrder--如果查詢條件不為空,if@st
5、rWhere!=''set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@strWhere+''+@strOrderend--如果不是第一頁,則elsebegin--以下代碼賦予了@strSQL以真正執(zhí)行的SQL代碼--sql查詢語句set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@fldName+'
6、'+@strTmp+'('+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''+@fldName+'from'+@tblName+''+@strOrder+')astblTmp)'+@strOrder--如果查詢條件不為空,則另寫sql語句if@strWhere!=''set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from'+@tblName+'where'+@fldName+''
7、+@strTmp+'('+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''+@fldName+'from'+@tblName+'where'+@strWhere+''+@strOrder+')astblTmp)and'+@strWhere+''+@strOrderendendexec(@strSQL)GO--運行存儲過程pages--表名varchar,要返回的列名(*為返回所有)varchar,排序的列varchar,每頁顯示數(shù)量int,--
8、第幾頁int,是否統(tǒng)計總數(shù)bit,是否降序排列bit,排列條件(不要帶where)varchar--統(tǒng)計borrow表的記錄數(shù)量execpages'uu','*','',0,0,1,0,''--按borrowid排倒序分別顯示1、2、3頁的信息execpages'uu','*','uid',4,1,0,1,''execpages'uu','*','uid',4,2,0,1