Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk mengembalikan keputusan yang ditetapkan dalam prosedur tersimpan MySQL

Bagaimana untuk mengembalikan keputusan yang ditetapkan dalam prosedur tersimpan MySQL

PHPz
PHPzasal
2023-04-21 11:20:003199semak imbas

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:

  1. Tentukan set. parameter output dan kembalikan set hasil
  2. Gunakan pernyataan 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!

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