Rumah  >  Artikel  >  pangkalan data  >  prosedur tersimpan mysql c

prosedur tersimpan mysql c

PHPz
PHPzasal
2023-05-14 13:24:071045semak imbas

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:

  1. Keselamatan: Hak akses pengguna kepada pangkalan data dan kaedah capaian data boleh dikawal melalui prosedur tersimpan.
  2. Logik: Prosedur tersimpan boleh melengkapkan operasi data yang kompleks, seperti pengiraan, gelung, pertimbangan, dsb.
  3. Kebolehselenggaraan: Prosedur tersimpan boleh meningkatkan penggunaan semula kod dan mengurangkan jumlah kod, sekali gus memudahkan penyelenggaraan dan kemas kini pangkalan data.

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.

  1. Parameter IN: mewakili nilai parameter yang diluluskan dalam prosedur tersimpan, yang boleh dibaca dan diubah suai dalam prosedur tersimpan.
  2. Parameter KELUAR: mewakili output nilai parameter dalam prosedur tersimpan, yang boleh mengembalikan satu atau lebih hasil.
  3. Parameter INOUT: Menunjukkan nilai parameter input dan output dalam proses yang disimpan, iaitu, ia boleh digunakan sama ada sebagai parameter input atau parameter output.

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:

  1. IF, ELSEIF dan ELSE: digunakan untuk melaksanakan cawangan bersyarat.
  2. CASE, WHEN and ELSE: digunakan untuk melaksanakan berbilang cawangan bersyarat.
  3. LOOP dan END LOOP: digunakan untuk melaksanakan gelung mudah.
  4. WHILE DO dan END WHILE: digunakan untuk melaksanakan gelung kompleks.

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:

  1. Elakkan menggunakan terlalu banyak pembolehubah sementara dan pernyataan gelung, yang akan mengurangkan kecekapan pelaksanaan prosedur tersimpan dengan ketara.
  2. Apabila menggunakan pernyataan kawalan aliran, RETURN harus digunakan dan bukannya SELECT.
  3. Menggunakan pernyataan Penyata Disediakan dalam prosedur tersimpan untuk bertanya dan mengemas kini data boleh meningkatkan kecekapan pertanyaan.
  4. Pertimbangkan untuk menggunakan paparan atau sertai pertanyaan dan bukannya 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!

Kenyataan:
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
Artikel sebelumnya:mysql set rootArtikel seterusnya:mysql set root