Rumah  >  Artikel  >  pangkalan data  >  pelaksanaan prosedur tersimpan mysql

pelaksanaan prosedur tersimpan mysql

WBOY
WBOYasal
2023-05-08 16:58:381971semak imbas

MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka Berbanding dengan sistem pengurusan pangkalan data hubungan yang lain, MySQL ialah salah satu sistem yang paling biasa digunakan. MySQL boleh melakukan pemprosesan data yang kompleks dan logik perniagaan melalui prosedur tersimpan, meningkatkan prestasi dan kecekapan pangkalan data. Berikut menerangkan cara melaksanakan prosedur tersimpan MySQL.

  1. Buat prosedur tersimpan

Dalam MySQL, anda boleh menggunakan pernyataan "CREATE PROCEDURE" untuk mencipta prosedur tersimpan. Sintaksnya adalah seperti berikut:

CREATE PROCEDURE procedure_name ([IN / OUT / INOUT] parameter_name data_type, [...])
BEGIN
    -- 存储过程体
END;

Di mana:

  • procedure_name: Nama prosedur yang disimpan.
  • MASUK / KELUAR / MASUK: Jenis parameter prosedur tersimpan, IN mewakili parameter input, OUT mewakili parameter output dan INOUT mewakili parameter input dan output.
  • nama_parameter: Nama parameter.
  • data_type: Jenis data parameter, yang boleh menjadi sebarang jenis data yang disokong oleh MySQL.
  • Isi prosedur tersimpan: blok kod yang sebenarnya dilaksanakan oleh prosedur tersimpan

Sebagai contoh, berikut ialah contoh mudah prosedur tersimpan:

CREATE PROCEDURE hello_world()
BEGIN
    SELECT 'Hello, World!';
END;
  1. Melaksanakan Prosedur tersimpan

Untuk melaksanakan prosedur tersimpan, anda perlu menggunakan pernyataan "PANGGILAN". Sintaks adalah seperti berikut:

CALL procedure_name([parameter_value, ...]);

Di mana:

  • procedure_name: Nama prosedur tersimpan untuk dilaksanakan.
  • nilai_parameter: Nilai parameter yang akan dihantar ke prosedur tersimpan.

Sebagai contoh, kita boleh menggunakan pernyataan berikut untuk melaksanakan prosedur tersimpan hello_world() yang dibuat di atas:

CALL hello_world();

Hasil pelaksanaan adalah seperti berikut:

+-------------+
| Hello, World! |
+-------------+
| Hello, World! |
+-------------+
1 row in set (0.00 sec)
  1. Gunakan parameter IN

Gunakan parameter IN untuk menghantar nilai ke prosedur yang disimpan untuk melaksanakan beberapa operasi tertentu. Sebagai contoh, prosedur tersimpan berikut akan menggunakan parameter IN untuk mencari butiran pengguna tertentu:

CREATE PROCEDURE get_user_details(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = user_id;
END;

Apabila melaksanakan prosedur tersimpan, kami perlu menghantar ID pengguna kepada prosedur tersimpan. Sebagai contoh, berikut ialah contoh:

CALL get_user_details(1);

Hasil pelaksanaan adalah seperti berikut:

+----+----------+---------+------------+
| id | username | country | created_at |
+----+----------+---------+------------+
|  1 | john     | USA     | 2022-05-01 |
+----+----------+---------+------------+
1 row in set (0.00 sec)
  1. Gunakan parameter OUT

Gunakan parameter OUT untuk dapatkan nilai daripada pemulangan prosedur tersimpan. Sebagai contoh, prosedur tersimpan berikut akan menggunakan parameter OUT untuk mengembalikan butiran pengguna yang ditentukan:

CREATE PROCEDURE get_user_details(IN user_id INT, OUT username TEXT, OUT country TEXT, OUT created_at DATE)
BEGIN
    SELECT username, country, created_at INTO username, country, created_at FROM users WHERE id = user_id;
END;

Apabila melaksanakan prosedur tersimpan ini, kami perlu lulus ID pengguna dan prosedur tersimpan akan mengembalikan butiran pengguna yang sepadan dengan maklumat ID tersebut. Sebagai contoh, berikut ialah contoh:

CALL get_user_details(1, @username, @country, @created_at);
SELECT @username, @country, @created_at;

Hasil pelaksanaan adalah seperti berikut:

+----------+---------+------------+
| @username | @country | @created_at |
+----------+---------+------------+
| john     | USA     | 2022-05-01 |
+----------+---------+------------+
1 row in set (0.00 sec)
  1. Menggunakan parameter INOUT

Menggunakan parameter INOUT boleh lulus parameter dan mengembalikan nilai menggunakan parameter itu. Sebagai contoh, prosedur tersimpan berikut akan menggunakan parameter INOUT untuk mengemas kini butiran pengguna yang ditentukan:

CREATE PROCEDURE update_user_details(INOUT user_id INT, IN username TEXT, IN country TEXT, IN created_at DATE)
BEGIN
    UPDATE users SET username = username, country = country, created_at = created_at WHERE id = user_id;
END;

Semasa melaksanakan prosedur tersimpan ini, kami perlu menghantar ID pengguna, bersama dengan butiran untuk dikemas kini. Sebagai contoh, berikut ialah contoh:

SET @user_id = 1;
CALL update_user_details(@user_id, 'jane', 'UK', '2022-05-01');
SELECT @user_id;

Hasil pelaksanaan adalah seperti berikut:

+---------+
| @user_id |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)

Seperti yang anda lihat, prosedur tersimpan berjaya mengemas kini butiran pengguna dan mengembalikan ID pengguna.

Dengan menggunakan prosedur tersimpan, pemprosesan data yang cekap dan logik perniagaan boleh dilakukan dalam MySQL. Artikel ini menerangkan cara membuat, melaksanakan dan menggunakan pelbagai jenis prosedur tersimpan. Menggunakan prosedur tersimpan boleh meningkatkan prestasi dan kecekapan pangkalan data MySQL dan memberikan sokongan yang lebih baik untuk perniagaan kami.

Atas ialah kandungan terperinci pelaksanaan prosedur tersimpan mysql. 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