MySQL ialah sistem pengurusan pangkalan data hubungan yang sangat biasa digunakan, yang boleh digunakan untuk menyimpan, memproses dan mengurus sejumlah besar data. Prosedur tersimpan adalah fungsi yang sangat berguna yang disediakan oleh MySQL Mereka boleh merangkum satu siri pernyataan SQL ke dalam blok kod boleh guna semula, dengan itu meningkatkan kecekapan pelaksanaan pernyataan SQL, mengurangkan kerumitan kod, meningkatkan keselamatan, dsb. Oleh itu, menguasai penggunaan prosedur tersimpan MySQL adalah sangat penting untuk meningkatkan kecekapan pembangunan dan pengurusan pangkalan data.
1. Pengenalan kepada prosedur tersimpan
Prosedur tersimpan ialah himpunan penyata SQL tersusun ditakrifkan dalam MySQL Semasa membuat pertanyaan, anda hanya perlu memanggil prosedur tersimpan . Berbanding dengan melaksanakan pernyataan SQL sahaja, prosedur tersimpan boleh mengurangkan overhed rangkaian dengan ketara dan meningkatkan kecekapan pertanyaan dan pemprosesan data.
Selain itu, prosedur tersimpan mempunyai ciri penting berikut:
2. Format sintaks prosedur tersimpan
Untuk menentukan prosedur tersimpan dalam MySQL, anda perlu menggunakan pernyataan CREATE PROCEDURE. Berikut ialah format sintaks asas bagi pernyataan CREATE PROCEDURE:
CREATE PROCEDURE 存储过程名称(参数列表) BEGIN -- sql语句 END;
Antaranya, nama prosedur yang disimpan diperlukan dan senarai parameter boleh ditinggalkan mengikut keperluan. Antara BEGIN dan END, anda boleh menulis satu siri pernyataan SQL untuk melaksanakan pertanyaan data, penulisan, pengubahsuaian dan operasi lain yang berkaitan.
Berikut ialah contoh prosedur tersimpan yang mudah Prosedur tersimpan hanya mempunyai satu parameter, dan hanya mengubah suai dan mengembalikannya:
CREATE PROCEDURE test_proc(IN num INT) BEGIN SET num = num + 1; SELECT num; END;
Apabila melaksanakan prosedur tersimpan, ia boleh dipanggil melalui PANGGILAN. pernyataan :
CALL test_proc(10);
Hasil pelaksanaan ialah 11.
3. Parameter dalam prosedur tersimpan
Dalam prosedur tersimpan, anda boleh menggunakan tiga jenis parameter: IN, OUT dan INOUT.
Berikut ialah contoh prosedur tersimpan dengan parameter:
CREATE PROCEDURE get_user_by_id(IN userid INT, OUT username VARCHAR(50)) BEGIN SELECT username FROM user WHERE id=userid; SET username = CONCAT('Welcome, ', username); END;
Apabila memanggil prosedur tersimpan ini, anda perlu memasukkan parameter id pengguna dan menentukan pembolehubah untuk menerima nama pengguna parameter output:
DECLARE uname VARCHAR(50); CALL get_user_by_id(1, @uname); SELECT @uname;
4. Kawalan proses dan gelung dalam prosedur tersimpan
Selain melaksanakan secara langsung pernyataan SQL, prosedur tersimpan juga boleh menggunakan pernyataan kawalan aliran dan pernyataan gelung untuk menyelesaikan operasi logik tertentu. MySQL menyokong pernyataan kawalan aliran berikut:
Berikut ialah contoh gelung WHILE DO yang menambah 1 tahun kepada umur dalam jadual pengguna:
CREATE PROCEDURE update_user_age() BEGIN DECLARE i INT DEFAULT 0; DECLARE n INT; SELECT COUNT(*) FROM user INTO n; WHILE i<=n DO UPDATE user SET age=age+1 WHERE id=i; SET i=i+1; END WHILE; END;
Apabila melaksanakan prosedur tersimpan ini, panggil sahaja:
CALL update_user_age();
5. Pengendalian pengecualian dalam prosedur tersimpan
Apabila ralat berlaku dalam prosedur tersimpan, pengendalian pengecualian boleh digunakan untuk mengelakkan ranap program. Dalam MySQL, pengendalian pengecualian dilaksanakan menggunakan sintaks DECLARE ... HANDLER.
Berikut ialah contoh pengendalian pengecualian Apabila memadam rekod jadual pengguna, prosedur yang disimpan akan membuang pengecualian jika rekod telah dirujuk oleh jadual lain.
CREATE PROCEDURE delete_user(IN userid INT) BEGIN DECLARE exit_test CONDITION FOR SQLSTATE '23000'; START TRANSACTION; DELETE FROM user WHERE id=userid; IF ROW_COUNT() = 0 THEN SIGNAL exit_test; END IF; COMMIT; END;
Jika pengecualian berlaku semasa melaksanakan prosedur tersimpan, anda boleh menulis kod program berikut untuk mengendalikannya:
DECLARE EXIT HANDLER FOR SQLSTATE '23000' -- 处理异常 END;
6. Pengoptimuman prosedur tersimpan
Walaupun prosedur tersimpan Ia boleh meningkatkan kecekapan pertanyaan SQL, tetapi jika reka bentuk prosedur tersimpan tidak munasabah, ia juga boleh menyebabkan penurunan kecekapan pertanyaan. Berikut ialah beberapa cadangan pengoptimuman untuk prosedur tersimpan:
Ringkasnya, prosedur tersimpan adalah fungsi yang sangat penting dalam MySQL Ia boleh meningkatkan kecekapan pelaksanaan pernyataan SQL, mengurangkan kerumitan kod, meningkatkan keselamatan, dsb. Apabila menggunakan prosedur tersimpan, anda perlu memberi perhatian kepada parameter, kawalan proses, pengendalian pengecualian, dsb. Anda juga perlu mempertimbangkan cara meningkatkan pertanyaan pangkalan data dan mengemas kini kecekapan dengan mengoptimumkan prosedur tersimpan.
Atas ialah kandungan terperinci prosedur tersimpan mysql c. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!