MySQL tạo thủ tục lưu sẵn với tham số INSERT

Trong MySQL, thủ tục lưu trữ là một nhóm các câu lệnh MySQL được thực thi cùng nhau khi bạn gọi thủ tục

Một thủ tục được lưu trữ có phần giống với một chức năng. Sự khác biệt chính là thủ tục được lưu trữ chỉ có thể được gọi bằng từ khóa CALL, trong khi hàm có thể được đưa vào câu lệnh MySQL

Một hàm cần trả về một giá trị, nhưng một thủ tục chỉ thực thi các câu lệnh để thao tác với dữ liệu của bạn mà không trả về một giá trị nào

Hãy tìm hiểu cách bạn tạo và gọi một thủ tục được lưu trữ. Đầu tiên, tạo một bảng ví dụ có tên Cities với câu lệnh sau

CREATE TABLE `Cities` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100),
  PRIMARY KEY (`id`)
) 

Để tạo thủ tục lưu trữ, bạn sử dụng câu lệnh

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
0 theo sau với tên thủ tục như sau

CREATE PROCEDURE getCities()
SELECT * FROM Cities;

Đoạn mã SQL trên sẽ tạo một thủ tục

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
1 truy xuất tất cả các hàng và cột của bảng Cities

Để gọi thủ tục, sử dụng từ khóa CALL như hình bên dưới

CALL getCities();

Bạn cũng có thể khai báo các tham số để truyền vào thủ tục trong khi gọi bằng cách thêm chúng vào dấu ngoặc đơn sau tên thủ tục

Ví dụ sau yêu cầu bạn chuyển một thủ tục

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
4 cho thủ tục
CREATE PROCEDURE getCities()
SELECT * FROM Cities;
5

CREATE PROCEDURE insertCity(cityName VARCHAR(100))
INSERT INTO `Cities` VALUES (NULL, cityName);

Sau đó, bạn có thể gọi thủ tục

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
5 và chuyển đối số
CREATE PROCEDURE getCities()
SELECT * FROM Cities;
4 như thế này

CALL insertCity('York');

Đối với thủ tục lưu trữ đơn giản chỉ có một dòng, bạn có thể viết ngay câu lệnh bên dưới câu lệnh

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
0

Nhưng nếu bạn có một thủ tục lưu trữ phức tạp với nhiều dòng, thì bạn cần thêm mệnh đề

CREATE PROCEDURE getCities()
SELECT * FROM Cities;
9 và câu lệnh ghép
CALL getCities();
0 vào cú pháp
CREATE PROCEDURE getCities()
SELECT * FROM Cities;
0 của mình

Xem xét ví dụ sau

DELIMITER //
CREATE PROCEDURE insertCity(cityName VARCHAR(100))
BEGIN
  INSERT INTO `Cities` VALUES (NULL, cityName);
  SELECT * FROM `Cities`;
END; //

Quy trình trên sẽ chèn một hàng mới vào bảng Cities, sau đó lấy tất cả dữ liệu từ bảng dưới dạng đầu ra

Bởi vì thủ tục có nhiều hơn một câu lệnh, dấu phân cách được thay đổi từ dấu chấm phẩy mặc định

CALL getCities();
3 thành dấu gạch chéo kép
CALL getCities();
4 bằng cách sử dụng từ khóa
CREATE PROCEDURE getCities()
SELECT * FROM Cities;
9

Việc thay đổi ký hiệu dấu phân cách khiến MySQL xem xét toàn bộ các câu lệnh trên bên trong câu lệnh

CALL getCities();
0

Nếu không xác định ký hiệu dấu phân cách, MySQL sẽ diễn giải lần lượt từng câu lệnh phía trên, gây ra lỗi

Đây là kết quả của việc gọi thủ tục

CALL insertCity('Bristol');

+----+----------+
| id | name     |
+----+----------+
|  1 | York     |
|  2 | Bristol  |
+----+----------+

Và đó là cách hoạt động của thủ tục lưu trữ MySQL. Bạn có thể thêm bất kỳ câu lệnh MySQL hợp lệ nào bên trong quy trình và chạy chúng cùng nhau bằng cách sử dụng câu lệnh CALL

Bằng cách lưu trữ các câu lệnh của bạn bên trong một thủ tục, bạn có thể thực hiện các câu lệnh bao nhiêu lần tùy ý mà không cần phải viết chúng trong dòng lệnh

Cuối cùng, để loại bỏ một thủ tục lưu sẵn, bạn có thể sử dụng câu lệnh

CALL getCities();
8 như sau

DROP PROCEDURE IF EXISTS insertCity;

Mệnh đề

CALL getCities();
9 được thêm vào để ngăn MySQL đưa ra lỗi khi thủ tục không tồn tại

Làm cách nào để tạo thủ tục lưu sẵn để chèn dữ liệu vào MySQL?

Tạo thủ tục lưu sẵn đơn giản. PHÂN BIỆT ; . Bạn có thể xem thủ tục dưới thủ tục lưu sẵn. open the MySQL workbench Connect to the MySQL Database copy-paste the code in the query editor window click on Execute. You can view the procedure under stored procedures.

Làm cách nào để thêm tham số trong thủ tục được lưu trữ?

Để thêm các tham số, chúng ta chỉ cần thêm dấu ngoặc đơn sau tên của thủ tục được lưu trữ trong mệnh đề CREATE PROC . Tên tham số bắt đầu bằng dấu @ theo sau là tên tham số. Sau đó, kiểu dữ liệu cho tham số được xác định bằng từ khóa AS và từ khóa cho kiểu dữ liệu tương ứng (INT trong ví dụ trên).

Chúng ta có thể sử dụng câu lệnh chèn trong thủ tục được lưu trữ không?

Thủ tục được lưu trữ để Chọn, Chèn, Cập nhật, Xóa . Câu lệnh UPDATE được sử dụng để chỉnh sửa và cập nhật các giá trị của một bản ghi hiện có. Câu lệnh DELETE được sử dụng để xóa các bản ghi khỏi bảng cơ sở dữ liệu. The INSERT statement is used to add new rows to a table. The UPDATE statement is used to edit and update the values of an existing record. The DELETE statement is used to delete records from a database table.

Làm cách nào để thực thi thủ tục lưu trữ trong MySQL với tham số?

Chúng ta có thể sử dụng câu lệnh CALL để gọi thủ tục lưu sẵn. Câu lệnh này trả về các giá trị cho người gọi nó thông qua các tham số của nó (IN, OUT hoặc INOUT). Cú pháp sau đây được sử dụng để gọi thủ tục được lưu trữ trong MySQL. GỌI tên thủ tục ((các) tham số)