Penjelasan terperinci tentang set hasil prosedur tersimpan MySQL

PHPz
Lepaskan: 2023-04-21 11:45:41
asal
2840 orang telah melayarinya

Prosedur tersimpan MySQL ialah satu set pernyataan SQL yang disusun dan disimpan dalam pangkalan data, dan ia boleh dipanggil berulang kali. Prosedur tersimpan boleh menerima parameter, melaksanakan satu siri operasi dan mengembalikan keputusan dalam pelbagai cara. Artikel ini terutamanya memperkenalkan set hasil prosedur tersimpan MySQL.

1. Set keputusan prosedur disimpan MySQL

Set keputusan prosedur disimpan MySQL boleh dikembalikan dalam salah satu cara berikut:

  1. Penyata KEMBALI

Prosedur tersimpan boleh menggunakan pernyataan RETURN untuk mengembalikan nilai, yang boleh menjadi integer, nombor titik terapung, tarikh, masa, rentetan, dsb. Jika prosedur tersimpan tidak mengembalikan sebarang hasil, anda boleh menggunakan pernyataan RETURN untuk menamatkan pelaksanaan prosedur tersimpan.

Sebagai contoh, prosedur tersimpan berikut mengembalikan produk dua parameter input:

CREATE PROCEDURE myProc(IN a INT, IN b INT)
BEGIN
    DECLARE result INT;
    SET result = a * b;
    RETURN result;
END;
Salin selepas log masuk
  1. Parameter OUT

Prosedur tersimpan boleh menggunakan Parameter OUT untuk mengembalikan satu atau berbilang nilai. Parameter OUT mesti diisytiharkan dalam senarai parameter prosedur tersimpan dan mesti ditetapkan dalam prosedur tersimpan. Apabila prosedur tersimpan tamat, pemanggil boleh mendapatkan semula nilai ini.

Sebagai contoh, prosedur tersimpan berikut mengembalikan jumlah dan perbezaan dua parameter input:

CREATE PROCEDURE myProc(IN a INT, IN b INT, OUT sum INT, OUT difference INT)
BEGIN
    SET sum = a + b;
    SET difference = a - b;
END;
Salin selepas log masuk
  1. PILIH pernyataan

Prosedur tersimpan boleh gunakan pernyataan SELECT Mengembalikan satu atau lebih set hasil. Set hasil boleh mengandungi satu atau lebih baris data, setiap baris terdiri daripada satu set medan.

Sebagai contoh, prosedur tersimpan berikut mengembalikan semua maklumat pekerja dalam jadual Pekerja:

CREATE PROCEDURE myProc()
BEGIN
    SELECT * FROM Employee;
END;
Salin selepas log masuk
  1. SET penyata

Prosedur tersimpan boleh menggunakan pernyataan SET Mengembalikan pembolehubah pengguna. Pembolehubah pengguna boleh menyimpan sebarang jenis nilai, seperti integer, nombor titik terapung, tarikh, rentetan, dsb.

Sebagai contoh, prosedur tersimpan berikut mengembalikan nama pekerja dalam jadual Pekerja:

CREATE PROCEDURE myProc(IN employeeID INT, OUT employeeName VARCHAR(255))
BEGIN
    SELECT name INTO @employeeName FROM Employee WHERE ID = employeeID;
    SET employeeName = @employeeName;
END;
Salin selepas log masuk

2 Bagaimana prosedur tersimpan MySQL menetapkan keputusan

Prosedur yang disimpan boleh gunakan Cara berikut untuk memproses set hasil:

  1. Gelung

Prosedur tersimpan boleh menggunakan gelung untuk melintasi setiap baris data dalam set hasil dan memproses data.

Sebagai contoh, prosedur tersimpan berikut mengembalikan semua nama pekerja dalam jadual Pekerja:

CREATE PROCEDURE myProc()
BEGIN
    DECLARE employeeName VARCHAR(255);
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT name FROM Employee;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    
    get_employee: LOOP
        FETCH cur INTO employeeName;
        
        IF done THEN
            LEAVE get_employee;
        END IF;
        
        SELECT employeeName;
    END LOOP;
    
    CLOSE cur;
END;
Salin selepas log masuk
  1. Kursor

Prosedur yang disimpan boleh menggunakan kursor untuk melintasi Setiap baris data dalam set hasil dan diproses.

Sebagai contoh, prosedur tersimpan berikut mengembalikan semua nama pekerja dalam jadual Pekerja:

CREATE PROCEDURE myProc()
BEGIN
    DECLARE employeeName VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT name FROM Employee;
    
    OPEN cur;
    
    get_employee: LOOP
        FETCH cur INTO employeeName;
        
        IF done THEN
            LEAVE get_employee;
        END IF;
        
        SELECT employeeName;
    END LOOP;
    
    CLOSE cur;
END;
Salin selepas log masuk
  1. Subkueri

Prosedur tersimpan boleh menggunakan subkueri untuk memproses data baris dan lajur dalam set hasil. Subqueries boleh menggabungkan set hasil prosedur tersimpan ke dalam pertanyaan lain.

Sebagai contoh, prosedur tersimpan berikut mengembalikan semua maklumat pekerja dalam jadual Pekerja:

CREATE PROCEDURE myProc()
BEGIN
    SELECT *
    FROM Employee
    WHERE departmentID = (
        SELECT ID FROM Department WHERE name = 'Sales'
    );
END;
Salin selepas log masuk

3 Pengoptimuman set keputusan prosedur tersimpan MySQL

Prosedur yang disimpan boleh gunakan Teknik berikut untuk mengoptimumkan pemprosesan set hasil:

  1. Menggunakan indeks

Prosedur tersimpan boleh menggunakan indeks untuk mempercepatkan pertanyaan set hasil. MySQL menyokong pelbagai jenis indeks, termasuk B-tree, hash, dan indeks teks penuh.

Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh mencipta indeks menggunakan medan ID jadual Pekerja:

CREATE INDEX idx_employee ON Employee(ID);
Salin selepas log masuk
  1. Hadkan bilangan set hasil

Prosedur tersimpan boleh menggunakan pernyataan LIMIT untuk mengehadkan bilangan set hasil. Ini boleh mengurangkan masa pelaksanaan dan jejak memori prosedur yang disimpan.

Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh menggunakan pernyataan LIMIT untuk mengembalikan maklumat 10 pekerja pertama:

CREATE PROCEDURE myProc()
BEGIN
    SELECT *
    FROM Employee
    LIMIT 10;
END;
Salin selepas log masuk
  1. Gunakan jadual dalam memori

Prosedur tersimpan boleh menggunakan jadual memori untuk mencipta set hasil sementara. Jadual dalam ingatan biasanya lebih pantas daripada jadual cakera, tetapi ia mengambil lebih banyak ruang memori daripada jadual cakera.

Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh menggunakan enjin Memori untuk mencipta set hasil sementara:

CREATE TEMPORARY TABLE tempEmployee ENGINE=MEMORY
SELECT * FROM Employee;
Salin selepas log masuk

Atas ialah kandungan terperinci Penjelasan terperinci tentang set hasil prosedur tersimpan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan