Rumah >pangkalan data >tutorial mysql >Apakah prosedur tersimpan rentetan mysql

Apakah prosedur tersimpan rentetan mysql

PHPz
PHPzke hadapan
2023-06-01 22:31:29687semak imbas

1. Tentukan prosedur tersimpan rentetan

Dalam MySQL, anda boleh menggunakan perintah DELIMITER untuk menentukan pembatas yang berbeza daripada ";" untuk menggunakan berbilang SQL dalam pernyataan prosedur tersimpan. Sebagai contoh, contoh berikut mentakrifkan prosedur tersimpan bernama my_proc yang menggunakan pembatas "//":

DELIMITER //
CREATE PROCEDURE my_proc()
BEGIN
    -- 定义字符串变量
    DECLARE my_str VARCHAR(50) DEFAULT 'Hello, world!';

    -- 输出字符串变量
    SELECT my_str;

    -- 修改字符串变量的值
    SET my_str = CONCAT(my_str, ' MySQL!');

    -- 再次输出字符串变量
    SELECT my_str;
END //
DELIMITER ;

Dalam contoh di atas, mula-mula gunakan arahan DELIMITER untuk menetapkan pembatas kepada "/ /", dan kemudian mentakrifkan pembolehubah rentetan bernama my_str dengan nilai awal "Hello, world!". Seterusnya, nilai pembolehubah my_str adalah output dalam prosedur tersimpan, dan kemudian nilai itu diubah suai menggunakan arahan SET Apabila nilai pembolehubah my_str adalah output, didapati ia telah bertukar kepada "Hello, world! MySQL !".

2. Hantar parameter kepada prosedur tersimpan rentetan

Biasanya, dalam aplikasi sebenar, anda perlu menghantar parameter kepada prosedur tersimpan untuk melaksanakan operasi yang berbeza berdasarkan parameter ini. Prosedur tersimpan bernama my_proc ditakrifkan dalam contoh berikut, yang menerima dua parameter (x dan y), mengira jumlahnya dan mengembalikan hasilnya:

DELIMITER //
CREATE PROCEDURE my_proc(IN x INT, IN y INT, OUT result INT)
BEGIN
    SET result = x + y;
END //
DELIMITER ;

Dalam contoh di atas, x ditakrifkan menggunakan kata kunci IN dan y ialah parameter input, dan gunakan kata kunci OUT untuk mentakrifkan hasil sebagai parameter output (iaitu, prosedur yang disimpan akan mengembalikan nilai hasil). Badan prosedur tersimpan hanya mengandungi pernyataan SQL yang dikira yang menambah nilai x dan y dan menyimpan hasilnya dalam pembolehubah hasil.

Seterusnya, anda boleh menggunakan arahan CALL untuk memanggil prosedur tersimpan my_proc dan lulus dua parameter, contohnya:

SET @x = 10;
SET @y = 20;
CALL my_proc(@x, @y, @result);
SELECT @result;

Dalam contoh di atas, dua pembolehubah @x dan @y adalah yang pertama ditakrifkan, Dan tetapkan nilai kepada 10 dan 20; kemudian gunakan perintah CALL untuk memanggil prosedur tersimpan my_proc, dan lulus @x dan @y sebagai parameter input akhirnya, hasil output @hasil prosedur tersimpan adalah output ke konsol.

3. Gunakan pernyataan IF dan struktur gelung

Logik yang lebih kompleks boleh dicapai dengan menggunakan pernyataan IF dan struktur gelung dalam prosedur tersimpan. Sebagai contoh, contoh berikut mentakrifkan prosedur tersimpan bernama my_proc, yang menerima parameter n, mengira nombor ke-n jujukan Fibonacci dan mengembalikan hasilnya:

DELIMITER //
CREATE PROCEDURE my_proc(IN n INT, OUT result INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE a INT DEFAULT 1;
    DECLARE b INT DEFAULT 1;

    IF n <= 0 THEN
        SET result = 0;
    ELSEIF n = 1 OR n = 2 THEN
        SET result = 1;
    ELSE
        WHILE i < n DO
            SET result = a + b;
            SET a = b;
            SET b = result;
            SET i = i + 1;
        END WHILE;
    END IF;
END //
DELIMITER ;

Dalam contoh di atas, gunakan pernyataan IF untuk penghakiman: jika n kurang daripada atau sama dengan 0, kembalikan 0 secara langsung; jika n sama dengan 1 atau 2, kembalikan 1 jika tidak, gunakan gelung WHILE untuk mengira nombor ke-n bagi jujukan Fibonacci.

Anda boleh menggunakan arahan CALL untuk memanggil prosedur tersimpan my_proc dan lulus parameter, contohnya:

SET @n = 10;
CALL my_proc(@n, @result);
SELECT @result;

Dalam contoh di atas, tetapkan parameter @n kepada 10, panggil my_proc yang disimpan prosedur, dan Output @result adalah output ke konsol. Keluaran akhir hendaklah 55 kerana nombor kesepuluh dalam jujukan Fibonacci ialah 55.

Atas ialah kandungan terperinci Apakah prosedur tersimpan rentetan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam