Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan kursor untuk menulis prosedur tersimpan dalam Oracle

Cara menggunakan kursor untuk menulis prosedur tersimpan dalam Oracle

PHPz
PHPzasal
2023-04-17 15:25:562148semak imbas

Oracle ialah sistem pengurusan pangkalan data hubungan yang digunakan secara meluas Ia menyediakan fungsi yang dipanggil prosedur tersimpan yang menyokong penggunaan kursor untuk mengurus data. Prosedur tersimpan boleh dianggap sebagai blok kod SQL pra-disusun yang menerima parameter, melaksanakan satu siri operasi pangkalan data dan mengembalikan hasil. Artikel ini akan memperkenalkan cara menggunakan kursor untuk menulis prosedur tersimpan dalam Oracle.

1. Gambaran keseluruhan kursor dan prosedur tersimpan

Kursor ialah penunjuk yang boleh digunakan untuk melintasi set hasil pertanyaan dan mengembalikan data di dalamnya. Dalam Oracle, kursor boleh digunakan untuk prosedur dan fungsi yang disimpan. Prosedur tersimpan ialah atur cara tersusun yang boleh disimpan dalam pangkalan data dan dipanggil apabila diperlukan. Prosedur tersimpan mempunyai faedah berikut:

  1. Meningkatkan prestasi

Prosedur tersimpan hanya perlu disusun sekali, bukannya menyusun pernyataan SQL setiap kali ia dilaksanakan. Ini boleh meningkatkan prestasi pangkalan data.

  1. Boleh mengurangkan overhed rangkaian

Prosedur tersimpan biasanya dilaksanakan pada pelayan pangkalan data, yang bermaksud penghantaran data dari pelayan kepada klien dapat dikurangkan, dengan itu mengurangkan overhed rangkaian.

  1. Berbilang kegunaan

Memandangkan prosedur tersimpan boleh disimpan dalam pangkalan data, ia boleh digunakan berulang kali dan dipanggil dalam berbilang aplikasi.

2. Penggunaan asas kursor

Kursor ialah pembolehubah penunjuk yang mengandungi set hasil satu atau lebih rekod. Dalam Oracle, anda boleh menggunakan kursor untuk melintasi set hasil dan melakukan pemprosesan pada data di dalamnya. Penggunaan asas kursor adalah seperti berikut:

  1. Mengisytiharkan kursor

Kursor ialah objek PL/SQL dan perlu diisytiharkan menggunakan pernyataan DECLARE. Jenis kursor termasuk kursor eksplisit dan tersirat. Berikut ialah format untuk mengisytiharkan kursor eksplisit:

CURSOR cursor_name IS select_statement;

di mana cursor_name ialah nama kursor dan select_statement ialah pernyataan SQL yang digunakan untuk menentukan keputusan yang ditetapkan kepada boleh diakses oleh kursor. Sebagai contoh, berikut ialah contoh pengisytiharan kursor:

ISYTIHKAN
nama_kursor KURSOR UNTUK
PILIH nama_lajur_1, nama_lajur_2
DARI nama_jadual;

  1. KURSOR BUKA 🎜>
Sebelum menggunakan kursor, anda perlu membukanya menggunakan pernyataan OPEN. Berikut ialah format untuk membuka kursor:

BUKA nama_kursor;

Sebagai contoh, berikut ialah contoh untuk membuka kursor:

BUKA nama_kursor;

    Baca Kursor
Selepas membuka kursor, anda boleh menggunakan pernyataan FETCH untuk membaca data daripada kursor. Pernyataan FETCH menggerakkan penuding kursor ke rekod seterusnya dan menyimpan data dalam pembolehubah yang ditentukan. Berikut ialah format pernyataan FETCH:

FETCH cursor_name INTO variable_name1, variable_name2, ...;

Contohnya, berikut ialah contoh penggunaan FETCH statement untuk membaca data kursor :

AMBIK nama_kursor KE dalam lajur1, lajur2;

    Tutup kursor
Selepas menggunakan kursor, anda perlu menggunakan pernyataan CLOSE untuk menutupnya . Berikut ialah format menutup kursor:

TUTUP cursor_name;

Sebagai contoh, berikut ialah contoh menutup kursor:

TUTUP cursor_name;

3. Gunakan Menulis prosedur tersimpan dengan kursor

Dalam Oracle, anda boleh menggunakan kursor untuk menulis prosedur tersimpan Berikut ialah beberapa langkah asas tentang menggunakan kursor untuk menulis prosedur tersimpan:

<.>Mengisytiharkan prosedur tersimpan
  1. Gunakan kenyataan CREATE PROCEDURE untuk mengisytiharkan prosedur tersimpan dan nyatakan nama prosedur tersimpan dan pernyataan SQL yang terkandung dalam prosedur tersimpan.

Berikut ialah contoh pengisytiharan prosedur tersimpan:

BUAT PROSEDUR PROSEDUR_nama_prosedur

AS

CURSOR cursor_name IS
PILIH column_name_1, column_name_2
FROM table_name 🎜>MULAI
...
TAMAT;


Buka kursor

  1. Dalam prosedur tersimpan, anda perlu menggunakan pernyataan OPEN untuk membuka kursor. Berikut ialah contoh membuka kursor:
BUKA cursor_name;

Baca data kursor dan lakukan operasi lain

  1. Dalam prosedur tersimpan, anda perlu untuk menggunakan Penyata FETCH membaca data daripada kursor dan melaksanakan operasi lain, seperti memasukkan atau mengemas kini data. Berikut ialah contoh menggunakan kursor untuk membaca data dan memasukkan data baharu:
ISYTIHKAN

nama_kursor KURSOR UNTUK

PILIH nama_lajur_1, nama_lajur_2

DARI nama_jadual;

nama_pembolehubah_1 column_name_1%TYPE ;
variable_name_2 column_name_2%TYPE;

BEGIN

​​​​BUKA cursor_name;
LOOP


END LOOP;

TUTUP cursor_name>;  FETCH cursor_name INTO variable_name_1, variable_name_2;   EXIT WHEN cursor_name%NOTFOUND;   INSERT INTO new_table_name   (column_name_1, column_name_2)   VALUES (variable_name_1, variable_name_2);


Tutup kursor

    Selepas pelaksanaan prosedur tersimpan selesai, anda perlu menggunakan kenyataan TUTUP untuk menutup kursor. Berikut ialah contoh menutup kursor:
  1. TUTUP cursor_name;

4 Ringkasan

Kursor ialah pembolehubah penunjuk yang digunakan untuk melintasi set hasil dan melakukan pemprosesan pada. data di dalamnya. Dalam Oracle, anda boleh menggunakan kursor untuk menulis prosedur tersimpan, meningkatkan prestasi pangkalan data dan mengurangkan overhed rangkaian. Prosedur tersimpan boleh digunakan beberapa kali dan dipanggil dalam berbilang aplikasi, yang merupakan ciri pangkalan data yang sangat penting. Untuk menggunakan kursor dan prosedur tersimpan dengan berkesan, penggunaannya perlu dikaji dengan teliti dan diamalkan dengan sewajarnya.

Atas ialah kandungan terperinci Cara menggunakan kursor untuk menulis prosedur tersimpan dalam 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