Rumah >pangkalan data >tutorial mysql >Bagaimanakah prosedur tersimpan mysql mengembalikan set hasil (dua kaedah)

Bagaimanakah prosedur tersimpan mysql mengembalikan set hasil (dua kaedah)

PHPz
PHPzasal
2023-04-21 10:12:184169semak imbas

Prosedur tersimpan MySQL ialah koleksi arahan SQL pratulis yang boleh dipanggil dan dilaksanakan apabila diperlukan. Prosedur tersimpan biasanya digunakan untuk mengendalikan operasi pangkalan data yang kompleks, yang boleh meningkatkan keselamatan dan prestasi pangkalan data sambil juga mengurangkan jumlah kod dalam aplikasi. Prosedur tersimpan MySQL juga boleh mengembalikan set hasil untuk memudahkan pertanyaan aplikasi dan operasi statistik.

Terdapat dua cara untuk prosedur tersimpan MySQL mengembalikan set hasil: menggunakan parameter OUT dan menggunakan kursor. Berikut menerangkan penggunaan kedua-dua kaedah ini masing-masing.

1 Gunakan parameter OUT untuk mengembalikan set hasil

Gunakan parameter OUT untuk menyimpan hasil pertanyaan dalam satu atau lebih pembolehubah, dan kemudian kembalikan pembolehubah ini sebagai parameter output prosedur yang disimpan. Kaedah ini sesuai untuk mengembalikan set hasil yang lebih kecil, seperti nilai tunggal atau sejumlah kecil data.

Berikut ialah contoh menggunakan parameter OUT untuk mengembalikan hasil pertanyaan:

CREATE PROCEDURE `get_total_orders`(OUT total INT)
BEGIN
    SELECT COUNT(*) INTO total FROM orders;
END;

Prosedur tersimpan di atas digunakan untuk mengira jumlah kiraan pesanan dan menyimpan hasilnya dalam parameter OUT bernama jumlah. Kod sampel untuk menggunakan prosedur tersimpan ini adalah seperti berikut:

SET @total = 0;
CALL get_total_orders(@total);
SELECT @total as total_orders;

Dalam contoh ini, mula-mula takrifkan pembolehubah @total dan berikannya nilai 0. Prosedur tersimpan get_total_orders kemudiannya dipanggil, menyimpan hasil dalam parameter OUT @total. Akhir sekali, tanya nilai pembolehubah @total dan keluarkan hasilnya.

2. Gunakan kursor untuk mengembalikan set hasil

Kursor ialah penunjuk kepada set hasil dan boleh digunakan untuk mengakses setiap baris set hasil secara rawak. Menggunakan kursor untuk mengembalikan set hasil sesuai untuk mengembalikan set hasil yang lebih besar atau apabila berbilang pertanyaan dan operasi diperlukan.

Berikut ialah contoh menggunakan kursor untuk mengembalikan hasil pertanyaan:

CREATE PROCEDURE `get_customer_orders`(IN customer_id INT)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE order_id INT;
    DECLARE order_date DATE;
    DECLARE order_total DECIMAL(10,2);
    DECLARE cur CURSOR FOR SELECT id, order_date, total FROM orders WHERE customer_id = customer_id;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO order_id, order_date, order_total;
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 处理每一行数据
    END LOOP;
    CLOSE cur;
END;

Prosedur tersimpan di atas digunakan untuk menanyakan semua pesanan pelanggan tertentu dan menyimpan hasil pertanyaan dalam kursor. Bahagian yang memproses data baris diulas dan operasi yang sepadan boleh dilakukan di sini mengikut keperluan perniagaan. Kod sampel untuk menggunakan prosedur tersimpan ini adalah seperti berikut:

CALL get_customer_orders(123);

Dalam contoh ini, prosedur tersimpan get_customer_orders dipanggil dan nombor pelanggan 123 dihantar sebagai parameter input. Prosedur yang disimpan akan menanyakan semua pesanan pelanggan dan menyimpan hasilnya dalam kursor untuk operasi seterusnya.

Ringkasan

Prosedur tersimpan MySQL boleh mengembalikan set hasil melalui parameter OUT dan kursor, dan anda boleh memilih kaedah pemulangan yang sesuai mengikut keperluan perniagaan. Menggunakan prosedur tersimpan boleh meningkatkan keselamatan dan prestasi pangkalan data di samping mengurangkan jumlah kod aplikasi. Apabila mereka bentuk dan menggunakan prosedur tersimpan, perhatian harus diberikan kepada penulisan standard dan penggunaan sederhana untuk mencapai prestasi pangkalan data yang optimum dan kecekapan aplikasi.

Atas ialah kandungan terperinci Bagaimanakah prosedur tersimpan mysql mengembalikan set hasil (dua kaedah). 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