分頁功能儲存過程
alterprocedure
[dbo
].[p_splitpagesquery
]@tablesname
nvarchar(max),--
表名或檢視名(只能傳單一表名)
@pknvarchar(max)=
'',--
主鍵(可以為空!)
@strsort
nvarchar(max)=
'',--
排序字段(按照這個欄位對查詢結果進行排序),不能為空
@sorttype
int=
0,--
排序方式,預設為0(公升序),1為降序
@strwhere
nvarchar(max)=
'',--
查詢條件(即sql語句中的where後面部分)
@fields
nvarchar(max)='*
',--
讀取字段(呈現出來的字段)
@pagecurrent
int=
1,--
當前頁碼,預設為1
@pagesize
int=
10,--
頁面大小,預設為10
@pagecount
int output,--
總頁數(按照頁面大小一共分了多少頁)
@recordcount
int output--
查詢結果的總條數
as/*
返回值說明:查詢結果(表)
*/declare
@sqlstr
nvarchar(4000)if
@strwhere
isnot
null
and@strwhere
!=''
begin
set@strwhere='
where '+
@strwhere+'
'end
else
begin
set@strwhere=''
endbegin
if@strsort=''
if@pk
isnot
null
and@pk
!=''
set@strsort
=@pk
if@pagecurrent
<
1set
@pagecurrent=1
if@sorttype=1
and@strsort
!=''
set@strsort
=@strsort+'
desc 'if
@sorttype=0
and@strsort
!=''
set@strsort
=@strsort+'
asc 'if
@pagecurrent=1
--第一頁提高效能
begin
set@sqlstr='
select top '+
str(@pagesize) +''
+@fields+'
from '+
@tablesname+'
as tb '+
@strwhere
if@strsort
!=''
set@sqlstr
=@sqlstr+'
order by '+
@strsort
endelse
begin
declare
@startpos
nvarchar(50
)
declare
@endpos
nvarchar(50
)
set@startpos
=convert(nvarchar(50),(@pagecurrent
-1) *
@pagesize+1
)
set@endpos
=convert(nvarchar(50),@pagecurrent
*@pagesize
)
set@sqlstr='
select '+
@fields+'
from (select row_number() over(order by '+
@strsort+'
) as rownum , tb.* '+
'from '+
@tablesname+'
as tb '+
@strwhere+'
) as d
where rownum between '+
@startpos+'
and '+
@endpos
if@strsort
!=''
set@sqlstr
=@sqlstr+'
order by '+
@strsort
endend
@sqlstr
exec(@sqlstr
)declare
@sqlcount
nvarchar(4000
)set
@sqlcount='
select @recordcount=count(*),@pagecount=ceiling((count(*)+0.0)/'+
cast(@pagesize
asvarchar)+
') from '+
@tablesname
+@strwhere
--輸出引數賦值
exec sp_executesql @sqlcount,n'
@recordcount int output,@pagecount int output',
@recordcount output,@pagecount output
呼叫示例
exec@x=[dbo
].[p_splitpagesquery]'
表或檢視
','',@sorderby,@nordertpye,@ssqlstring,'*'
,
@npagenum,@npagesize,@pagecount output,@recordcount output
T SQL 儲存過程
1 允許模組化程式設計 2 執行速度快 3 減少網路流通量 4 提高系統安全性 儲存過程分為 系統儲存過程和使用者自定義儲存過程 系統儲存過程 由系統定義,存放在master資料庫中以sp 或者xp 開頭 儲存過程的分為帶引數和不帶引數 帶引數的儲存過程 有 輸入引數和輸出引數,輸出引數在定義時除了...
分頁儲存過程 分頁儲存過程
分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...
T SQL 程式設計 儲存過程
t sql程式設計 1.變數 全域性變數 變 量含 義 error 最後乙個t sql錯誤的錯誤號 identity 最後一次插入的識別符號 language 當前使用的語言名稱 max connections 可以建立的同時連線的最大數目 rowcount 受上乙個sql語句影響的行數 serve...