Prosedur tersimpan MySQL ialah blok kod yang telah disusun terlebih dahulu yang boleh ditakrifkan dan disimpan dalam pangkalan data MySQL untuk pelaksanaan masa hadapan. Mereka boleh menerima parameter input dan mengembalikan hasil, dan banyak operasi kompleks boleh ditulis menggunakan prosedur tersimpan. Menggunakan prosedur tersimpan boleh meningkatkan prestasi pangkalan data dan mengurangkan pertindihan kod.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan MySQL untuk mencipta prosedur tersimpan, termasuk sintaks prosedur tersimpan, cara mentakrif parameter input dan mengembalikan hasil, dan cara memanggil prosedur tersimpan. Sebelum memulakan, pastikan anda disambungkan ke pangkalan data MySQL.
Prosedur tersimpan MySQL menggunakan DELIMITER untuk menetapkan pembatas tersuai kerana pembatas lalai ialah ";", yang sama dengan simbol akhir pernyataan prosedur tersimpan. Kita boleh mencipta prosedur tersimpan asas menggunakan sintaks berikut:
DELIMITER $$ CREATE PROCEDURE procedure_name() BEGIN -- 存储过程代码 END $$ DELIMITER ;
Kami mentakrifkan nama prosedur tersimpan dan menggunakan kata kunci BEGIN dan END untuk mentakrifkan blok kod. Dalam versi MySQL yang lebih baharu, anda juga boleh mentakrifkan prosedur tersimpan menggunakan sintaks selain daripada BEGIN dan END, seperti yang ditunjukkan di bawah:
CREATE PROCEDURE procedure_name() COMMENT '存储过程描述' LANGUAGE SQL [NOT] DETERMINISTIC [CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA] SQL SECURITY INVOKER COMMENT '存储过程描述' BEGIN -- 存储过程代码 END;
Dalam sintaks ini, anda boleh menambah atribut tambahan, seperti SQL SECURITY, untuk Tentukan keselamatan prosedur tersimpan.
Sekarang, mari buat prosedur tersimpan mudah yang menerima parameter dan mengembalikan kuasa dua parameter itu. Mari kita namakan "persegi".
DELIMITER $$ CREATE PROCEDURE square(IN num INT) BEGIN SELECT num * num; END $$ DELIMITER ;
Kami menggunakan kata kunci IN untuk menentukan parameter input. Dalam prosedur yang disimpan, kami hanya mendarabkan parameter itu dengan sendirinya dan mengembalikan hasilnya menggunakan pernyataan SELECT.
Untuk memanggil prosedur tersimpan, kita boleh menggunakan pernyataan CALL, diikuti dengan nama dan parameter prosedur tersimpan. Mari gunakan sintaks berikut untuk memanggil prosedur tersimpan "persegi" yang baru kami buat.
CALL square(5);
Ini akan mengembalikan 25. Untuk lebih memahami cara prosedur tersimpan berfungsi, kita boleh membandingkannya dengan pertanyaan biasa.
SELECT 5 * 5;
Ini juga akan mengembalikan 25. Seperti yang dapat dilihat, hasil yang sama diperoleh menggunakan prosedur tersimpan dan pertanyaan biasa, tetapi prosedur tersimpan mempunyai lebih banyak kelebihan, seperti yang dinyatakan sebelum ini, termasuk pertanyaan pantas dan penggunaan semula blok kod.
Prosedur tersimpan mengandungi pelbagai pernyataan aliran kawalan, termasuk pernyataan IF, pernyataan CASE dan pernyataan gelung. Berikut adalah beberapa contoh.
Pernyataan IF menentukan masa untuk melaksanakan blok kod berdasarkan syarat. Berikut ialah contoh pernyataan IF mudah:
DELIMITER $$ CREATE PROCEDURE even_or_odd(IN num INT) BEGIN IF num % 2 = 0 THEN SELECT 'even'; ELSE SELECT 'odd'; END IF; END $$ DELIMITER ;
Dalam contoh ini, kami telah mencipta prosedur tersimpan yang menerima nombor dan mengembalikan rentetan bergantung pada sama ada nombor itu genap atau ganjil. Mengembalikan "genap" jika nombor boleh dibahagi dengan 2, "ganjil" sebaliknya.
Pernyataan KES adalah serupa dengan pernyataan IF, tetapi boleh melaksanakan blok kod yang berbeza berdasarkan lebih banyak syarat. Berikut ialah contoh pernyataan CASE mudah:
DELIMITER $$ CREATE PROCEDURE grade(IN score INT) BEGIN CASE WHEN score >= 90 THEN SELECT 'A'; WHEN score >= 80 THEN SELECT 'B'; WHEN score >= 70 THEN SELECT 'C'; WHEN score >= 60 THEN SELECT 'D'; ELSE SELECT 'F'; END CASE; END $$ DELIMITER ;
Dalam contoh ini, kami mencipta prosedur tersimpan yang menerima skor dan mengembalikan gred huruf berdasarkan skor tersebut. Jika markah lebih besar daripada atau sama dengan 90, ia akan diberikan gred A, 80 mata dan 70 mata akan diberikan gred B dan gred C masing-masing, 60 mata dan ke bawah akan diberikan gred D, jika tidak ia akan diberikan gred F. .
WHILE loop ialah sejenis gelung yang berulang kali melaksanakan blok kod. Ia berdasarkan syarat yang akan terus melaksanakan kod selagi syarat itu dipenuhi. Berikut ialah contoh gelung WHILE yang mudah:
DELIMITER $$ CREATE PROCEDURE count_down(IN num INT) BEGIN WHILE num > 0 DO SELECT num; SET num = num - 1; END WHILE; END $$ DELIMITER ;
Dalam contoh ini kami telah mencipta prosedur tersimpan yang menerima nombor dan mengira detik daripada nombor itu dan mengeluarkan setiap nombor ke dalam set hasil . Untuk mengira detik, kami menggunakan gelung WHILE dan selagi nombor itu lebih besar daripada 0, kami mengeluarkannya dan mengurangkan nilai num.
Prosedur disimpan MySQL ialah alat berkuasa yang boleh meningkatkan prestasi pangkalan data anda dengan ketara dan memudahkan kod anda. Artikel ini menerangkan cara membuat prosedur tersimpan menggunakan MySQL dan cara mentakrifkan parameter input dan mengembalikan hasil, serta menyediakan contoh pelbagai penyataan aliran kawalan. Walaupun prosedur tersimpan berkuasa, adalah penting untuk memberi perhatian kepada keselamatan untuk memastikan akses dikawal dengan betul dan data dilindungi.
Atas ialah kandungan terperinci penciptaan prosedur tersimpan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!