當前位置:首頁 » 存儲配置 » 存儲過程分頁

存儲過程分頁

發布時間: 2022-01-13 02:49:11

sql中使用存儲過程實現分頁代碼

SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY "欄位" ) AS RowNum
FROM 「表名」) as SelectedTable where "欄位"=「值」 between "開始數字" and 「結束數字」
AJAX方面可以直接使用jquery就OK了。幹嘛自己寫?

② 存儲過程分頁查詢

不是的 SQL語句每次執行時都要先編譯再執行
而存儲過程是編譯好的SQL語句
一直在SQL伺服器的 內存池 中存在

就相當與 一般的SQL語句是在電腦硬碟裡面
而 存儲過程 是在電腦CPU內存中的
當然 存儲過程更快 更高效啦

③ SQL 存儲過程分頁,(要求百萬級)

ALTER PROCEDURE GetDataList
(
@TableName varchar(50), --表名
@Fields varchar(5000) = '*', --欄位名(全部欄位為*)
@OrderField varchar(5000), --排序欄位(必須!支持多欄位)
@sqlWhere varchar(5000) = Null,--條件語句(不用加where)
@pageSize int, --每頁多少條記錄
@pageIndex int = 1 , --指定當前為第幾頁
@TotalPage int output --返回總頁數
)
as
begin Begin Tran --開始事務 Declare @sql nvarchar(4000);
Declare @totalRecord int; --計算總記錄數

if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'select @totalRecord = count(*) from ' + @TableName
else
set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--計算總記錄數

--計算總頁數
select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize) if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName
else
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere

--處理頁數超出范圍情況
if @PageIndex<=0
Set @pageIndex = 1

if @pageIndex>@TotalPage
Set @pageIndex = @TotalPage --處理開始點和結束點
Declare @StartRecord int
Declare @EndRecord int

set @StartRecord = (@pageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @pageSize - 1 --繼續合成sql語句
set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)

Exec(@Sql)
---------------------------------------------------
If @@Error <> 0
Begin
RollBack Tran
Return -1
End
Else
Begin
Commit Tran
Return @totalRecord ---返回記錄總數
End
end

④ sqlserver 存儲過程分頁

你可以採用 not in 方法
set @sql=' select top '+Str(@pageSize)+' * from dbo.LogManage where LogId not in(select top '+Str((@pageNumber-1)*@pageSize)+' LogId from LogManage order by LogId asc) as t'

⑤ 如何對存儲過程返回的結果集進行分頁

這個在資料庫端比較好,你現在得結果集是全部的6w數據,不太好處理,不如修改下存儲過程,多增加幾個參數。增加個第幾頁,每頁顯示數目。
這樣直接在存儲過程中通過limit(mysql),或者是top直接獲取就可

⑥ SQL分頁與存儲過程分頁是一樣的嗎

它們是不一樣的。
SQL分頁:
SQL數據是以頁為單位存儲在文件中的,每個頁面8KB。當往一個頁面中插入或者修改數據並會導致該頁面的數據會超出8KB時,SQL Server就會將頁面拆分成兩頁,從而能夠容納新插入的數據。

存儲過程分頁是另外一個概念。當查詢返回的結果集很大時,為了提高效率,將結果集分成若干小頁面,並只將用戶當前需要的頁面返回給應用程序。一個很好的應用案例:當你在網路輸入關鍵字,能搜索到成千上萬的網頁。如果將所有搜索到的結果全部一次顯示出來,將會很費時間和資源。網路按照排名將每10個搜索結果分成一頁,每次顯示一頁。用戶總是能很快見到結果。

⑦ 一個比較實用的大數據量分頁存儲過程

一個比較實用的大數據量分頁存儲過程

create proc sp_PublicTurnPageWebSite( @TBName nvarchar(100)=『『, --表名,如 pinyin
@PageSize int=10, --每頁的記錄數,默認為 10
@CurPage int=1, --表示當前頁 1
@KeyField nvarchar(100)=『ID『, --關鍵欄位名,默認為 ID,該欄位要求是表中的索引 或 無重復和不為空的欄位
@KeyAscDesc nvarchar(4)=『ASC『, --關鍵字的升、降序,默認為升序 ASC , 降序為 DESC
@Fields nvarchar(500)=『*『, --所選擇的列名,默認為全選
@Condition nvarchar(200)=『『, --where 條件,默認為空
@Order nvarchar(200)=『『 --排序條件,默認為空
) with encryption as
BEGIN
if @TBName = 『『
begin
raiserror(『請指定表名!『,11,1)
return
end
if @PageSize <=0 or @CurPage <0
begin
raiserror(『當前頁數和每頁的記錄數都必須大於零!『,11,1)
return
end
if @KeyAscDesc = 『DESC『
set @KeyAscDesc = 『<『
else
set @KeyAscDesc = 『>『
if @Condition <> 『『
set @Condition = 『 where 『 + @Condition
一個比較實用的大數據量分頁存儲過程
declare @SQL nvarchar(2000) set @SQL = 『『
if @CurPage = 1
set @SQL = @SQL + 『SELECT Top 『 + cast(@PageSize as nvarchar(20)) + 『 『 + @Fields + 『 FROM 『 + @TBName + @Condition + 『 『 + @Order
else
begin
declare @iTopNum int
set @iTopNum = @PageSize * (@CurPage - 1)
set @SQL = @SQL + 『declare @sLastValue nvarchar(100)『 + char(13)
set @SQL = @SQL + 『SELECT Top 『 + cast(@iTopNum as nvarchar(20)) + 『 @sLastValue=『 + @KeyField + 『 FROM 『 + @TBName + @Condition + 『 『 + @Order + char(13)

declare @Condition2 nvarchar(200)
if @Condition = 『『
set @Condition2 = 『 where 『 + @KeyField + @KeyAscDesc + 『@sLastValue 『
else
set @Condition2 = 『 and 『 + @KeyField + @KeyAscDesc + 『@sLastValue 『
set @SQL = @SQL + 『SELECT Top 『 + cast(@PageSize as nvarchar(20)) + 『 『 + @Fields + 『 FROM 『 + @TBName + @Condition + @Condition2 + @Order
end

⑧ oracle存儲過程的分頁

調用的時候這樣
declare
ocur tespackage.test_cursor;
v_count int:=0;
v_pagecount int :=0;
v_out int;
begin
fenye('table1',20,1,v_count,v_pagecount,ocur);
loop
fetch ocur into v_out ;
exit when ocur%notfound ;
dbms_output.put_line('count='||v_count);
end loop;
end ;
/

⑨ Oracle 存儲過程分頁

存儲過程是可以返回數據集的,用一個游標。
還有你的問題我都不怎麼清楚

⑩ SQLServer資料庫存儲過程分頁是怎樣的

存儲過程:create Procere pname
( @pageIndex int,@pageSize)
as
select * from tableName order by id
offset @pageIndex * pageSize fetch next pageSize rows only
分頁:
sqlserver 在2008之前 使用 top 和 not int top 的方式來做分頁
2008以後使用 row_number() 函數作為分頁關鍵函數
2012使用 offset 1 fetch next 10 rows only
你問了2個問題,你可以優先把視圖,存儲過程,觸發器等弄明白,分頁是查詢,在存儲過程里可以寫復雜的sql文,只是在運行時是預編譯和參數化查詢防止sql注入

熱點內容
addons文件夾 發布:2024-11-14 15:58:14 瀏覽:824
aipdf腳本 發布:2024-11-14 15:49:18 瀏覽:618
小編程家 發布:2024-11-14 15:43:29 瀏覽:140
java非同步存儲 發布:2024-11-14 15:43:28 瀏覽:66
普通電腦做數據伺服器 發布:2024-11-14 15:42:29 瀏覽:895
數位演算法軟體 發布:2024-11-14 15:38:00 瀏覽:516
apache外網不能訪問 發布:2024-11-14 15:34:15 瀏覽:479
如何上傳透明頭像 發布:2024-11-14 15:32:40 瀏覽:836
無法連接雲伺服器 發布:2024-11-14 15:09:26 瀏覽:504
公司伺服器的管理應該如何進行 發布:2024-11-14 15:08:18 瀏覽:215