Rumah  >  Artikel  >  pangkalan data  >  Bolehkah kursor digunakan dalam fungsi mysql?

Bolehkah kursor digunakan dalam fungsi mysql?

青灯夜游
青灯夜游asal
2022-06-13 18:47:252690semak imbas

Kursor boleh digunakan dalam fungsi mysql. Dalam MySQL, kursor hanya boleh digunakan untuk prosedur dan fungsi yang disimpan dalam prosedur atau fungsi yang disimpan kadangkala mengembalikan berbilang rekod, dan menggunakan pernyataan SELECT yang mudah, tiada cara untuk mendapatkan baris pertama, baris berikutnya atau sepuluh baris pertama bagi data , maka anda boleh menggunakan kursor untuk membaca rekod dalam keputusan pertanyaan yang ditetapkan satu demi satu. Kursor boleh digunakan untuk melaksanakan operasi ke hadapan atau ke belakang pada data yang diambil. Ia digunakan terutamanya dalam aplikasi interaktif, seperti pengguna menatal data pada skrin.

Bolehkah kursor digunakan dalam fungsi mysql?

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Kursor boleh digunakan dalam fungsi mysql.

Kursor: Juga dipanggil kursor, ia adalah pertanyaan pangkalan data yang disimpan pada pelayan DBMS Ia bukan penyataan pilih, tetapi set hasil yang diambil oleh pernyataan.

Penggunaan kursor: operasi ke hadapan atau ke belakang pada data yang diambil, terutamanya digunakan untuk aplikasi interaktif, seperti pengguna menatal data pada skrin

Ciri-ciri kursor:

  • Boleh menandakan kursor sebagai baca sahaja, supaya data boleh dibaca, tetapi tidak boleh dikemas kini dan dipadam

  • Boleh mengawal operasi arah yang boleh dilakukan (ke hadapan, ke belakang) , pertama, terakhir, kedudukan mutlak, kedudukan relatif, dsb.)

  • Boleh menandakan beberapa lajur sebagai boleh diedit dan beberapa lajur sebagai tidak boleh diedit

  • Nyatakan skop untuk menjadikan kursor boleh diakses oleh permintaan khusus yang menciptanya (seperti prosedur tersimpan) atau kepada semua permintaan Data aktif dalam kursor) disalin supaya data tidak berubah semasa tempoh pembukaan dan capaian kursor

  • Dalam MySQL, kursor hanya boleh digunakan untuk prosedur dan fungsi yang disimpan.

Dalam MySQL, pertanyaan dalam prosedur atau fungsi yang disimpan kadangkala mengembalikan berbilang rekod, dan menggunakan pernyataan SELECT yang mudah, tiada cara untuk mendapatkan baris pertama, baris seterusnya atau sepuluh baris pertama data. Pada masa ini, anda boleh menggunakan kursor untuk membaca rekod dalam keputusan pertanyaan yang ditetapkan satu demi satu. Kursor juga dipanggil kursor dalam beberapa bahan. Sistem pengurusan pangkalan data hubungan pada asasnya berorientasikan set Dalam MySQL, tiada ungkapan untuk menerangkan satu rekod dalam jadual, melainkan klausa WHERE digunakan untuk mengehadkan hanya satu rekod untuk dipilih. Jadi kadangkala kita mesti menggunakan kursor untuk memproses data pada satu rekod.

1. Isytiharkan kursor

Gunakan kata kunci DECLARE dalam MySQL untuk mengisytiharkan kursor, tentukan pernyataan SELECT yang sepadan dan tambahkan WHERE dan klausa lain seperti yang diperlukan. Bentuk asas sintaksnya adalah seperti berikut:

Antaranya, cursor_name mewakili nama pilih_statement mewakili pernyataan SELECT, yang boleh mengembalikan satu atau lebih baris data.

Contoh 1
DECLARE cursor_name CURSOR FOR select_statement;

Yang berikut mengisytiharkan kursor bernama Kursor nama adalah seperti berikut:

Pernyataan di atas mentakrifkan kursor nama Kursor terhad kepada prosedur tersimpan Selepas pemprosesan prosedur tersimpan selesai, kursor hilang.

mysql> DELIMITER //
mysql> CREATE PROCEDURE processnames()
    -> BEGIN
    -> DECLARE nameCursor CURSOR
    -> FOR
    -> SELECT name FROM tb_student;
    -> END//
Query OK, 0 rows affected (0.07 sec)
2. Buka kursor

Selepas mengisytiharkan kursor, jika anda ingin mengekstrak data daripada kursor, anda mesti membuka kursor terlebih dahulu. Dalam MySQL, membuka kursor dicapai melalui kata kunci OPEN, dan sintaksnya adalah seperti berikut:

di mana cursor_name mewakili nama kursor yang akan dibuka. Perlu diingatkan bahawa apabila kursor dibuka, kursor tidak menghala ke rekod pertama, tetapi ke hadapan rekod pertama.

Dalam program, kursor boleh dibuka beberapa kali. Selepas pengguna membuka kursor, pengguna atau program lain mungkin mengemas kini jadual data, jadi kadangkala hasil yang dipaparkan berbeza setiap kali pengguna membuka kursor.
OPEN cursor_name;

3. Gunakan kursor

Selepas kursor berjaya dibuka, anda boleh menggunakan pernyataan FETCH...INTO untuk membaca data seperti berikut:

Dalam pernyataan di atas, simpan hasil pelaksanaan pernyataan SELECT dalam kursor_nama_kursor kepada parameter pembolehubah var_name. Parameter pembolehubah var_name mesti ditakrifkan sebelum kursor boleh digunakan. Menggunakan kursor adalah serupa dengan traversal tatasusunan dalam bahasa peringkat tinggi Apabila kursor digunakan buat kali pertama, kursor menghala ke rekod pertama set hasil.

Kursor MySQL adalah baca sahaja, iaitu anda hanya boleh membaca keputusan yang ditetapkan secara berurutan dari awal ke belakang, bukan dari belakang ke hadapan, dan anda juga tidak boleh melompat terus ke rekod tengah .
FETCH cursor_name INTO var_name [,var_name]...

4. Tutup kursor

Selepas kursor digunakan, ia mesti ditutup dalam masa MySQL, gunakan kata kunci CLOSE untuk menutup kursor format adalah seperti berikut:

CLOSE mengeluarkan semua memori dalaman dan sumber yang digunakan oleh kursor, jadi setiap kursor harus ditutup apabila tidak diperlukan lagi.

Selepas kursor ditutup, ia tidak boleh digunakan tanpa membukanya semula. Walau bagaimanapun, tidak perlu mengisytiharkannya semula untuk menggunakan kursor yang diisytiharkan, hanya buka dengan penyataan OPEN.
CLOSE cursor_name;

Jika anda tidak menutup kursor secara eksplisit, MySQL akan menutupnya secara automatik apabila pernyataan END dicapai. Selepas kursor ditutup, ia tidak boleh digunakan menggunakan FETCH.

[Cadangan berkaitan:

tutorial video mysql

]

Atas ialah kandungan terperinci Bolehkah kursor digunakan dalam fungsi mysql?. 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