cari
Rumahpangkalan dataOracleBagaimana untuk melaksanakan pertanyaan paging dalam prosedur tersimpan Oracle

Dalam pangkalan data Oracle, prosedur tersimpan ialah blok kod SQL yang boleh digunakan semula yang boleh digunakan untuk melaksanakan banyak operasi data yang kompleks. Antaranya, pertanyaan paging ialah keperluan biasa, seperti memaparkan senarai data paging dalam aplikasi web, atau memaparkan hasil dalam paging dalam laporan.

Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pertanyaan halaman dalam prosedur tersimpan Oracle, dan menyediakan kod sampel mudah untuk membantu pembaca memahami dan menggunakan teknologi ini dengan lebih baik.

1. Prinsip asas pertanyaan paging

Dalam pertanyaan SQL umum, kita boleh menggunakan sintaks "SELECT * FROM table_name WHERE condition" untuk mendapatkan semula semua baris yang memenuhi syarat. Untuk melaksanakan pertanyaan paging, kami perlu memotong hasil pertanyaan mengikut bilangan halaman dan baris setiap halaman yang ditentukan, dan kemudian hanya mengembalikan data bilangan halaman yang ditentukan. Sebagai contoh, dalam halaman 1, kita boleh mendapatkan semula 10 baris pertama data, dalam halaman 2, kita boleh mendapatkan baris 11 hingga 20, dan seterusnya.

Mengikut prinsip ini, kami boleh menggunakan prosedur tersimpan Oracle untuk melaksanakan pertanyaan paging. Mula-mula, kita perlu mengira baris permulaan perolehan dan baris penamat dapatkan semula, kemudian gunakan fungsi "ROWNUM" untuk mengehadkan bilangan baris dalam hasil carian dan akhirnya mengembalikan hasil pertanyaan. Berikut ialah langkah pelaksanaan mudah:

  1. Kira garisan permulaan dan garisan penamat.

Perlu diambil perhatian bahawa fungsi ROWNUM Oracle mengisih hasil pertanyaan sebelum ia dikembalikan, bukan sebelum pertanyaan. Oleh itu, jika kita menggunakan fungsi ROWNUM dalam pernyataan pertanyaan utama, hasilnya mungkin tidak tepat atau tidak dapat diramalkan. Untuk menyelesaikan masalah ini, kita boleh menggunakan pernyataan subquery untuk mendayakan fungsi ROWNUM. Sebagai contoh, dalam pernyataan berikut, kita boleh mengira baris mula dan akhir:

PILIH baris_mula, baris_akhir
DARI (
PILIH ROWNUM AS rnum, ((halaman_no - 1) page_size + 1) SEBAGAI baris_mula, (tidak_halaman saiz_halaman) SEBAGAI baris_akhir
DARI (

SELECT 1 AS page_no, 10 AS page_size FROM DUAL

)
)
WHERE rnum = 1;

at In contoh ini, kita mula-mula mentakrifkan bilangan baris dan halaman setiap halaman, dan kemudian mengira baris permulaan dan baris berakhir melalui pernyataan subquery. Pernyataan ini akan mengembalikan satu baris data, termasuk nilai baris permulaan dan akhir.

  1. Dapatkan semula data.

Selepas mengira baris permulaan dan baris akhir, kita perlu menanyakan data yang memenuhi syarat. Menggunakan pernyataan subquery, kita boleh memilih semua baris yang memenuhi kriteria dan mengehadkan bilangan baris menggunakan fungsi ROWNUM. Sebagai contoh, dalam pernyataan berikut, kita boleh menanyakan bilangan halaman data yang ditentukan:

PILIH *
DARI (
PILIH ROWNUM sebagai rnum, t.*
DARI (

SELECT *
FROM table_name
WHERE condition
ORDER BY order_by

) t
)
WHERE rnum >= start_row DAN rnum

Dalam contoh ini, kami mula-mula mengisih data yang memenuhi kriteria, dan kemudian gunakan Fungsi ROWNUM mengehadkan keputusan. Akhir sekali, kami memilih hanya data antara baris mula yang ditentukan dan baris akhir daripada semua baris yang memenuhi syarat, dan akhirnya mengembalikan hasil pertanyaan.

2. Contoh pelaksanaan pertanyaan paging

Berikut ialah contoh prosedur tersimpan Oracle yang lengkap untuk melaksanakan pertanyaan paging:

BUAT ATAU GANTIKAN PROSEDUR PAGING_PROC(
i_page_no IN Integer,
i_page_size dalam integer,
o_records keluar sys_refcursor,
o_page_count out integer,
i_table_name dalam varchar2,
i_condition dalam varchar2,
IS
v_start_row INTEGER;
v_end_row INTEGER;
BEGIN
​​​​-- Langkah 1: Kira baris mula dan tamat
PILIH (i_page_no - 1)
i_page_size + 1, i_page . >
) WHERE rnum >= v_start_row AND rnum
-- Langkah 3: Kira kiraan halaman
PILIH CEIL(COUNT(*)/i_page_size)

KE DALAM o_page_count

FROM i_table_name
WHERE i_condition;
END PAGING_PROC;

Dalam contoh ini, kami memasukkan nombor halaman, saiz halaman, rekod output, nombor halaman dan nama jadual, Parameter seperti syarat dan pengasingan. Berdasarkan parameter input, kami mula-mula mengira baris permulaan dan baris penamat, kemudian gunakan pernyataan OPEN untuk membuka data output REFCUSOR.
SELECT ROWNUM AS rnum, t.*
FROM (
  SELECT *
  FROM i_table_name
  WHERE i_condition
  ORDER BY i_order_by
) t

Akhir sekali, kami mengira bilangan halaman dan mengeluarkan hasilnya. Sila ambil perhatian bahawa cara kami mengira bilangan halaman adalah dengan menggunakan fungsi COUNT agregat untuk membahagikan bilangan semua baris yang memenuhi syarat dengan bilangan baris setiap halaman dan bundarkan.

3. Kesimpulan


Dalam pangkalan data Oracle, prosedur tersimpan ialah teknologi operasi data yang penting. Dengan menggunakan prosedur tersimpan, kami boleh melaksanakan operasi data yang kompleks, seperti pertanyaan paging, kemas kini kelompok, import dan eksport data, dsb. Terutamanya dari segi pertanyaan paging, prosedur tersimpan Oracle boleh memberikan prestasi yang lebih tinggi dan keselamatan data yang lebih baik, dan juga boleh berinteraksi dengan mudah dengan antara muka program lain.

Dalam artikel ini, kami memperkenalkan cara melaksanakan pertanyaan halaman dalam prosedur tersimpan Oracle dan menyediakan kod sampel mudah. Kami menggalakkan pembaca mencuba teknik ini dalam aplikasi sebenar dan mengoptimumkan serta memanjangkannya mengikut keperluan mereka sendiri.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan paging dalam prosedur tersimpan Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah saya menggunakan kursor dalam PL/SQL untuk memproses pelbagai baris data?Bagaimanakah saya menggunakan kursor dalam PL/SQL untuk memproses pelbagai baris data?Mar 13, 2025 pm 01:16 PM

Artikel ini menerangkan kursor PL/SQL untuk pemprosesan data berturut-turut. Ia memperincikan pengisytiharan kursor, pembukaan, pengambilan, dan penutupan, membandingkan kursor tersirat, eksplisit, dan ref. Teknik untuk pengendalian dataset besar yang cekap dan menggunakan gelung

Bagaimana saya membuat pengguna dan peranan dalam oracle?Bagaimana saya membuat pengguna dan peranan dalam oracle?Mar 17, 2025 pm 06:41 PM

Artikel ini menerangkan cara membuat pengguna dan peranan dalam Oracle menggunakan arahan SQL, dan membincangkan amalan terbaik untuk menguruskan kebenaran pengguna, termasuk menggunakan peranan, mengikuti prinsip keistimewaan paling sedikit, dan audit biasa.

Bagaimanakah saya menggunakan pelekat data oracle dan subsetting untuk melindungi data sensitif?Bagaimanakah saya menggunakan pelekat data oracle dan subsetting untuk melindungi data sensitif?Mar 13, 2025 pm 01:19 PM

Butiran artikel ini Oracle Data Masking and Subsetting (DMS), penyelesaian untuk melindungi data sensitif. Ia meliputi mengenal pasti data sensitif, menentukan peraturan pelekat (shuffling, penggantian, rawak), menubuhkan pekerjaan, pemantauan, dan penyebaran

Bagaimana saya melakukan sandaran dalam talian di oracle dengan downtime minimum?Bagaimana saya melakukan sandaran dalam talian di oracle dengan downtime minimum?Mar 17, 2025 pm 06:39 PM

Artikel ini membincangkan kaedah untuk melakukan sandaran dalam talian di Oracle dengan downtime yang minimum menggunakan RMAN, amalan terbaik untuk mengurangkan downtime, memastikan konsistensi data, dan memantau kemajuan sandaran.

Bagaimana saya mengkonfigurasi penyulitan dalam oracle menggunakan penyulitan data telus (TDE)?Bagaimana saya mengkonfigurasi penyulitan dalam oracle menggunakan penyulitan data telus (TDE)?Mar 17, 2025 pm 06:43 PM

Artikel ini menggariskan langkah -langkah untuk mengkonfigurasi penyulitan data telus (TDE) di Oracle, memperincikan penciptaan dompet, membolehkan TDE, dan penyulitan data di pelbagai peringkat. Ia juga membincangkan manfaat TDE seperti perlindungan data dan pematuhan, dan bagaimana untuk veri

Bagaimana Saya Menggunakan Repositori Beban Kerja Automatik (AWR) dan Monitor Diagnostik Pangkalan Data Automatik (ADDM) di Oracle?Bagaimana Saya Menggunakan Repositori Beban Kerja Automatik (AWR) dan Monitor Diagnostik Pangkalan Data Automatik (ADDM) di Oracle?Mar 17, 2025 pm 06:44 PM

Artikel ini menerangkan cara menggunakan AWR dan Addm Oracle untuk pengoptimuman prestasi pangkalan data. Ia memperincikan penjanaan dan menganalisis laporan AWR, dan menggunakan Addm untuk mengenal pasti dan menyelesaikan kesesakan prestasi.

Bagaimanakah saya menggunakan teknologi flashback untuk pulih dari rasuah data logik?Bagaimanakah saya menggunakan teknologi flashback untuk pulih dari rasuah data logik?Mar 14, 2025 pm 05:43 PM

Artikel membincangkan menggunakan teknologi flashback Oracle untuk pulih dari rasuah data logik, memperincikan langkah-langkah untuk pelaksanaan dan memastikan integriti data selepas pemulihan.

Bagaimanakah saya melaksanakan dasar keselamatan dalam pangkalan data Oracle menggunakan pangkalan data swasta maya (VPD)?Bagaimanakah saya melaksanakan dasar keselamatan dalam pangkalan data Oracle menggunakan pangkalan data swasta maya (VPD)?Mar 13, 2025 pm 01:18 PM

Butiran artikel ini melaksanakan dasar keselamatan pangkalan data Oracle menggunakan pangkalan data swasta maya (VPD). Ia menerangkan mewujudkan dan menguruskan dasar VPD melalui fungsi yang menapis data berdasarkan konteks pengguna, menonjolkan amalan terbaik seperti paling kurang p

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan