Rumah >pangkalan data >tutorial mysql >Apakah prosedur tersimpan rentetan mysql
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!