Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Contoh untuk menerangkan cara menggunakan prosedur tersimpan Oracle untuk melaksanakan pertanyaan paging

Contoh untuk menerangkan cara menggunakan prosedur tersimpan Oracle untuk melaksanakan pertanyaan paging

PHPz
PHPzasal
2023-04-17 10:29:53814semak imbas

Dalam pangkalan data Oracle, prosedur tersimpan boleh digunakan untuk melaksanakan banyak logik kompleks, antaranya pertanyaan paging juga merupakan salah satu keperluan biasa. Artikel ini akan memperkenalkan cara menggunakan prosedur tersimpan Oracle untuk melaksanakan pertanyaan halaman dan memberikan contoh.

1. Keperluan untuk pertanyaan paging

Dalam aplikasi sebenar, biasanya diperlukan untuk membuat pertanyaan dan memaparkan sejumlah besar data. Jika semua data dipaparkan serentak, ia bukan sahaja akan menjejaskan prestasi sistem, tetapi juga menyebabkan pengalaman pengguna yang lemah. Oleh itu, kita biasanya perlu memaparkan data dalam halaman dan memaparkan data halaman demi halaman.

Dalam pangkalan data Oracle, pertanyaan paging biasanya dilaksanakan menggunakan kata kunci ROWNUM. Contohnya, untuk menanyakan 10 rekod pertama dalam pangkalan data, anda boleh menggunakan pernyataan pertanyaan berikut:

SELECT *
FROM table_name
WHERE ROWNUM <= 10;

Pernyataan pertanyaan ini boleh mengembalikan 10 data pertama dalam jadual dan melaksanakan pertanyaan paging mudah. Tetapi apabila anda perlu menanyakan data ke-11 hingga ke-20, anda perlu menggunakan pernyataan pertanyaan yang lebih kompleks:

SELECT *
FROM (
  SELECT ROWNUM rn, t.*
  FROM (
    SELECT *
    FROM table_name
    ORDER BY field_name
  ) t
  WHERE ROWNUM <= 20
)
WHERE rn >= 11;

Pernyataan pertanyaan ini boleh mengembalikan data ke-11 hingga ke-20 dalam jadual. Walau bagaimanapun, pernyataan pertanyaan ini agak rumit dan tidak begitu mudah dibaca. Jika terdapat banyak tempat di mana pertanyaan paging diperlukan, banyak pernyataan pertanyaan sedemikian perlu ditulis, yang tidak sesuai untuk penyelenggaraan dan pengurusan.

Untuk menyelesaikan masalah ini, kami boleh menggunakan prosedur tersimpan Oracle untuk melaksanakan fungsi pertanyaan halaman.

2. Gunakan prosedur tersimpan untuk melaksanakan pertanyaan halaman

Gunakan prosedur tersimpan untuk melaksanakan fungsi pertanyaan halaman, terutamanya dengan menghantar parameter. Kami perlu lulus parameter berikut:

  • Nama jadual; >
  • Bilangan rekod yang dipaparkan pada setiap halaman.
  • Mengikut parameter ini, prosedur tersimpan boleh melaksanakan pertanyaan paging berdasarkan kata kunci ROWNUM.
  • Berikut ialah contoh menggunakan prosedur tersimpan untuk melaksanakan pertanyaan paging:
  • Dalam prosedur tersimpan ini, jenis SYS_REFCUSOR digunakan untuk mengembalikan hasil pertanyaan. Kemudian mengikut parameter yang diluluskan, pernyataan pertanyaan paging dijana, dan akhirnya keputusan pertanyaan dimasukkan ke dalam set hasil yang dikembalikan.

Apabila memanggil prosedur tersimpan ini, anda boleh menggunakan pertanyaan berikut:

Pertanyaan ini akan mengembalikan data pada halaman 2 jadual, dengan 10 rekod dipaparkan pada setiap halaman.
CREATE OR REPLACE PROCEDURE get_page_data(
    p_table_name IN VARCHAR2,
    p_columns IN VARCHAR2,
    p_order_by IN VARCHAR2,
    p_page_num IN NUMBER,
    p_page_size IN NUMBER,
    p_result OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN p_result FOR
        SELECT *
        FROM (
            SELECT ROWNUM rn, t.*
            FROM (
                SELECT p_columns
                FROM p_table_name
                ORDER BY p_order_by
            ) t
            WHERE ROWNUM <= p_page_num * p_page_size
        )
        WHERE rn >= (p_page_num - 1) * p_page_size + 1;
END;
/

Ringkasnya, menggunakan prosedur tersimpan boleh melaksanakan fungsi pertanyaan halaman dengan mudah, menjadikan kod lebih jelas, lebih mudah difahami dan lebih mudah diselenggara. Contoh di atas telah memberikan idea yang boleh diubah suai dan dikembangkan mengikut keperluan sebenar.

Atas ialah kandungan terperinci Contoh untuk menerangkan cara menggunakan prosedur tersimpan Oracle untuk melaksanakan pertanyaan paging. 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