我認為比較好的分頁儲存過程

2021-04-08 21:45:25 字數 2363 閱讀 9552

create procedure sp_conn_sort

(@tblname   varchar(255),       -- 表名

@strgetfields varchar(1000) = '*',  -- 需要返回的列

@fldname varchar(255)='',      -- 排序的欄位名

@pagesize   int = 40,          -- 頁尺寸

@pageindex  int = 1,           -- 頁碼

@docount  bit = 0,   -- 返回記錄總數, 非 0 值則返回

@ordertype bit = 0,  -- 設定排序型別, 非 0 值則降序

@strwhere  varchar(1500)=''  -- 查詢條件 (注意: 不要加 where))as

declare @strsql   varchar(5000)       -- 主語句

declare @strtmp   varchar(110)        -- 臨時變數

declare @strorder varchar(400)        -- 排序型別

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 

--以上**的意思是如果@docount傳遞過來的不是0,就執行總數統計。以下的所有**都是@docount為0的情況

else

begin

if @ordertype != 0

begin

set @strtmp = '<(select min'

set @strorder = ' order by ' + @fldname +' desc'

--如果@ordertype不是0,就執行降序,這句很重要!

endelse

begin

set @strtmp = '>(select max'

set @strorder = ' order by ' + @fldname +' asc'

endif @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

--如果是第一頁就執行以上**,這樣會加快執行速度

endelse

begin

--以下**賦予了@strsql以真正執行的sql**

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)

我認為比較好的分頁儲存過程

create procedure sp conn sort tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 40,頁尺寸 pageindex int 1,頁...

比較好的論壇 個人認為

特點 地球人都知道。最喜愛的版塊 文化 it業界 讀書 體育 bbs.sina.com.cn 2.凱迪社群 最喜愛的版塊 貓眼看人 經濟風雲 笑話人生等 3.搜奇娛樂社群 最喜愛的版塊 精品影院 奇聞雜談 黑樓孤魂 帖圖等 4.天崖社群 特點 人氣旺!文人雅士,舞文弄墨!5.中國站長論壇 特點 站長...

個人認為比較好的計算機書籍

程式設計師的自我修養 全名 程式設計師的自我修養 連結 裝載與庫 知其然,更知其所以然 潘愛民 這本書主要介紹系統軟體的執行機制和原理,涉及在windows和linux兩個系統平臺上,一個應用程式在編譯 連結和執行時刻所發生的各種事項,包括 指令是如何儲存的,庫檔案如何與應用程式 靜態連結,應用程式...

AsyncTask 比較好的解釋

package com.example.asynctask import android.os.asynctask import android.widget.progressbar import android.widget.textview 生成該類的物件,並呼叫execute方法之後 首先執行...

ballmanford 比較好的理解方式

本文 假設存在最短路徑的話,那麼我們只要將這條最短路徑沿著權值為負的環路在繞一圈,那麼這條最短路徑的權值就會減少了,所以不存在最短的路徑,因為路徑的最小值為負無窮 一般形式 typedef struct edge edge n bool bellman ford 如果某次迴圈,沒有更新源點到任何頂點...