Prosedur tersimpan MySQL ialah satu set pernyataan SQL yang telah ditetapkan yang boleh dipanggil dan dilaksanakan apabila diperlukan. Prosedur tersimpan boleh menjadikan kod boleh digunakan semula dan meningkatkan prestasi pangkalan data, di samping meningkatkan keselamatan pembangunan.
Dalam MySQL, prosedur tersimpan boleh mengembalikan set hasil. Dalam kebanyakan kes, menggunakan prosedur tersimpan untuk mengembalikan set hasil boleh menjadikan kod lebih ringkas dan jelas, dan juga boleh meningkatkan prestasi pertanyaan. Artikel ini akan memperkenalkan cara mengembalikan set hasil dalam prosedur tersimpan MySQL.
Buat prosedur tersimpan dengan set hasil
Sebelum menggunakan prosedur tersimpan untuk mengembalikan set hasil, kita perlu memahami cara membuat prosedur tersimpan dengan set hasil. Berikut ialah contoh mencipta prosedur tersimpan mudah dengan set hasil:
CREATE PROCEDURE get_all_users() BEGIN SELECT * FROM users; END
Dalam contoh di atas, kami telah mencipta prosedur tersimpan bernama get_all_users()
. Apabila get_all_users()
prosedur tersimpan dipanggil, ia akan mengembalikan semua baris data dalam jadual data users
.
Perhatikan bahawa sebelum mengembalikan set hasil dalam prosedur tersimpan, kita perlu menentukan set hasil terlebih dahulu Terdapat dua cara untuk mentakrifkan set hasil dalam MySQL:
SELECT
untuk mengembalikan set hasil Kedua-dua kaedah akan diperkenalkan di bawah.
Kaedah 1: Tentukan parameter output dan kembalikan set hasil
Untuk menentukan parameter output dalam prosedur tersimpan, anda boleh menggunakan pengubah suai OUT
dan INOUT
. Parameter yang ditakrifkan menggunakan pengubah suai OUT
menunjukkan bahawa parameter mempunyai satu lagi fungsi daripada parameter input apabila prosedur tersimpan dilaksanakan. Ia juga akan digunakan untuk menyimpan set hasil prosedur tersimpan.
Dalam contoh berikut, kami menggunakan pengubah suai OUT
untuk mentakrifkan parameter bernama results
:
CREATE PROCEDURE get_all_users_2(OUT results VARCHAR(255)) BEGIN SELECT * FROM users; INTO results; END
Dalam contoh di atas, kami menggunakan pernyataan SELECT INTO
Simpan hasil pertanyaan kepada parameter results
.
dipanggil seperti berikut:
CALL get_all_users_2(@results); SELECT @results;
Dalam contoh di atas, kita mula-mula memanggil prosedur tersimpan get_all_users_2()
dan menyimpan hasilnya dalam pembolehubah @results
. Kami kemudiannya mengakses pembolehubah SELECT
dalam pernyataan @results
untuk mendapatkan set hasil yang dikembalikan oleh prosedur tersimpan.
Kaedah 2: Gunakan pernyataan SELECT
untuk mengembalikan set hasil
Cara lain untuk menggunakan prosedur tersimpan untuk mengembalikan set hasil adalah menggunakan pernyataan SELECT
untuk mengembalikan hasil ditetapkan. Pendekatan ini amat berguna apabila kita perlu mengembalikan beberapa set hasil.
Dalam contoh berikut, kami mentakrifkan prosedur tersimpan dengan dua SELECT
pernyataan:
CREATE PROCEDURE get_all_users_3() BEGIN SELECT * FROM users WHERE age > 18; SELECT * FROM users WHERE age <= 18; END
Dalam contoh di atas, kami menggunakan dua SELECT
pernyataan , untuk mengembalikan semua baris data dalam jadual users
dengan umur masing-masing melebihi 18 tahun dan kurang daripada atau sama dengan 18 tahun.
Selepas memanggil prosedur tersimpan ini, kita boleh mendapatkan data baris bagi setiap set hasil dengan memanggil fungsi mysql_store_result()
dan mysql_fetch_row()
beberapa kali.
mysql_query("CALL get_all_users_3()"); MYSQL_RES *res = mysql_store_result(&mysql); MYSQL_ROW row; while ((row = mysql_fetch_row(res))) { printf("%s %d\n", row[1], stoi(row[2])); } mysql_next_result(&mysql); res = mysql_store_result(&mysql); while ((row = mysql_fetch_row(res))) { printf("%s %d\n", row[1], stoi(row[2])); }
Kod di atas menunjukkan cara mendapatkan keputusan yang ditetapkan dengan memanggil prosedur tersimpan dalam fungsi mysql_query()
dan cara menggunakan fungsi mysql_store_result()
dan fungsi mysql_fetch_row()
untuk mendapatkan dan memproses data set hasil kami.
Kesimpulan
Dalam MySQL, prosedur tersimpan boleh mengembalikan set hasil. Kita boleh menyimpan set hasil prosedur tersimpan dengan mentakrifkan parameter output, atau kita boleh terus menggunakan pernyataan SELECT
untuk mengembalikan set hasil dalam prosedur tersimpan. Sama ada cara, prestasi pertanyaan dan kejelasan kod dipertingkatkan dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk mengembalikan keputusan yang ditetapkan dalam prosedur tersimpan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!