it-swarm.asia

Bagaimana cara MySQL mengembalikan hasil yang ditetapkan dari prosedur tersimpan?

Saya mencoba mencari tahu tentang prosedur tersimpan untuk digunakan dalam aplikasi web. Tampak bagi saya bahwa apa pun pernyataan terakhir dalam prosedur tersimpan MySQL tampaknya akan diperlakukan sebagai set hasil prosedur itu. Sayangnya, tampaknya ada referensi dalam dokumen MySQL yang mengatakan bahwa suatu prosedur dapat mengembalikan beberapa set hasil. Bagaimana perilaku ini dipicu? Bagaimana saya bisa memberi tahu server MySQL bahwa saya secara eksplisit ingin hanya satu set hasil yang dikembalikan?

(Misalnya, saya memiliki kueri yang melakukan SELECT dan beberapa sisipan. Saya tidak ingin memberi tahu klien tentang sisipan, tetapi saya ingin klien diberi rangkaian hasil SELECT ....)

16
Billy ONeal

Setiap pernyataan SELECT yang tidak dimasukkan ke dalam tabel atau variabel akan menghasilkan set hasil.

Jika Anda ingin prosedur tersimpan Anda hanya mengembalikan satu set hasil, pastikan Anda hanya memiliki satu pernyataan SELECT. Jika Anda memiliki pernyataan SELECT lainnya, pastikan bahwa mereka memasukkan hasil ke dalam tabel atau variabel.

PEMBARUAN
Berikut adalah contoh prosedur tersimpan.

Prosedur tersimpan ini akan mengembalikan satu set hasil:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;
END;;
DELIMITER ;

Prosedur tersimpan ini akan mengembalikan dua set hasil:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;

    SELECT * FROM table_2;
END;;
DELIMITER ;
17
dabest1