Rumah > pangkalan data > tutorial mysql > penciptaan prosedur tersimpan mysql

penciptaan prosedur tersimpan mysql

WBOY
Lepaskan: 2023-05-11 22:33:06
asal
2142 orang telah melayarinya

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.

Buat prosedur tersimpan asas

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 ;
Salin selepas log masuk

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;
Salin selepas log masuk

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 ;
Salin selepas log masuk

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.

Memanggil prosedur tersimpan

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);
Salin selepas log masuk

Ini akan mengembalikan 25. Untuk lebih memahami cara prosedur tersimpan berfungsi, kita boleh membandingkannya dengan pertanyaan biasa.

SELECT 5 * 5;
Salin selepas log masuk

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.

Pernyataan aliran kawalan

Prosedur tersimpan mengandungi pelbagai pernyataan aliran kawalan, termasuk pernyataan IF, pernyataan CASE dan pernyataan gelung. Berikut adalah beberapa contoh.

Pernyataan IF

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 ;
Salin selepas log masuk

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

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 ;
Salin selepas log masuk

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

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 ;
Salin selepas log masuk

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.

Kesimpulan

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan