Untuk membangun aplikasi web, fungsi penelusuran pagination sangat penting. Masalah ini sangat umum dalam pemrosesan database. Bahkan, metode pagination ini hanya berlaku untuk sejumlah kecil data. Mari ikuti editor saluran teknologi baru yang salah untuk mempelajari lebih lanjut!
Sumber Ide:
Mengambil catatan dari Nth ke MTH dari tabel publikasi:
Pilih Top M-N+1 *
Dari publikasi
Dimana (id tidak masuk
(Pilih ID N-1 Top
Dari Publish))
Berikut ini adalah prosedur tersimpan:
Salinan kode adalah sebagai berikut:Buat Prosedur Pagination3
@tblname varchar (255), - nama tabel
@strgetFields varchar (1000) = '*', - kolom yang akan dikembalikan
@FLDNAME VARCHAR (255) = '', - Urutkan Nama Bidang
@Pagesize int = 10, - ukuran halaman
@PageIndex int = 1, - nomor halaman
@Docount bit = 0, - Mengembalikan jumlah total catatan, pengembalian jika nilai bukan 0
@OrderType bit = 0, - atur jenis sortir, dan jika nilainya bukan 0, descending order
@strwhere varchar (1500) = '' - Kondisi kueri (Catatan: Jangan tambahkan di mana)
SEBAGAI
Deklarasikan @strsql Varchar (5000) - Pernyataan Subjek
Deklarasikan @strtmp varchar (110) - variabel sementara
DECLARE @Strorder Varchar (400) - Jenis Sortir
Jika @Docount! = 0
Mulai
jika @strwhere! = ''
set @strsql = 'pilih count (*) sebagai total dari [' + @tblname + '] di mana' + @strwhere
kalau tidak
set @strsql = 'pilih count (*) sebagai total dari [' + @tblname + ']'
akhir
-Kode di atas berarti bahwa jika @Docount melewati bukan 0, jumlah total akan dieksekusi. Semua kode berikut adalah kasus di mana @Docount adalah 0:
kalau tidak
Mulai
Jika @OrderType! = 0
Mulai
set @strtmp = '<(pilih min'
set @strorder = 'order by [' + @fldname + '] desc'
--Jika @OrderType bukan 0, lalu lakukan urutan menurun. Kalimat ini sangat penting!
akhir
kalau tidak
Mulai
set @strtmp = '> (pilih max'
set @strorder = 'order by [' + @fldname + '] ASC'
akhir
jika @pageIndex = 1
Mulai
jika @strwhere! = ''
set @strsql = 'pilih atas' + str (@pagesize) + '' + @strgetFields + 'dari [' + @tblname + '] di mana' + @stran mana + ' + @strorder
kalau tidak
set @strsql = 'pilih atas'+ str (@pagesize)+ ''+ @strgetFields+ 'dari ['+ @tblname+ ']'+ @strorder
--Jika ini adalah halaman pertama, jalankan kode di atas, yang akan mempercepat kecepatan eksekusi
akhir
kalau tidak
Mulai
set @strsql = 'pilih atas' + str (@pagesize) + '' +@strgetFields + 'dari ['
+ @tblname + '] di mana [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) dari (pilih Top' + str ((@pageIndex-1)*@pageSize) + '['
+ @fldname + '] dari [' + @tblname + ']' + @strorder + ') sebagai tbltmp)'
+ @strorder
jika @strwhere! = ''
set @strsql = 'pilih atas' + str (@pagesize) + '' +@strgetFields + 'dari ['
+ @tblname + '] di mana [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) dari (pilih Top' + str ((@pageIndex-1)*@pageSize) + '['
+ @fldname + '] dari [' + @tblname + '] di mana' + @strwhere + ''
+ @Strorder + ') sebagai tbltmp) dan' + @strwhere + '' + @strorder
akhir
akhir
exec (@strsql)
--Print @strsql
PERGI
Melalui konten yang diperkenalkan oleh editor 未分 saluran teknologi baru, saya percaya setiap orang memiliki pemahaman tertentu. Jika Anda ingin mengetahui lebih banyak konten teknis, silakan terus perhatikan 未分 saluran teknologi baru!