Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

Các quy trình được lưu trữ cho phép bạn lưu các truy vấn SQL để chạy lại sau. Nó rất thuận tiện cho các truy vấn SQL mà bạn cần chạy nhiều lần. Tại đây, cách thực hiện thủ tục được lưu trữ trong MySQL Workbench.

Dưới đây là các bước để chạy thủ tục được lưu trữ trong MySQL Workbench. Hãy nói rằng bạn có truy vấn SQL sau đây.

mysql> select * from products;

và chúng tôi tạo quy trình được lưu trữ sau đây GET_PRODUCTS bằng cách sử dụng truy vấn SQL ở trên.

mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Tiền thưởng đọc: MySQL Nhận hồ sơ trùng lặp

Chúng ta hãy xem xét cách thực hiện quy trình được lưu trữ trong MySQL Workbench.

1. Mở Workbench MySQL.

2. Tạo tab mới để chạy các câu lệnh SQL.

Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

Tiền thưởng đọc: MySQL thêm ràng buộc độc đáo

3. Nhập các câu lệnh SQL cho quy trình được lưu trữ trong tab mới của bạn.

Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

4. Thực hiện các câu lệnh Quy trình lưu trữ bằng cách nhấp vào biểu tượng ‘Lightning, được hiển thị bên dưới. Điều đó sẽ gọi thủ tục được lưu trữ trong MySQL Workbench.

Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

Tiền thưởng đọc: Quy trình lưu trữ MySQL với các tham số

5. Mở rộng nút thủ tục được lưu trữ ở khung bên phải. Bạn sẽ thấy tên của quy trình được lưu trữ của bạn (get_products). Nếu bạn không thấy nó, thì hãy nhấn nút làm mới bên cạnh các lược đồSCHEMAS

Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

Ubiq & nbsp; giúp bạn dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong bảng điều khiển thời gian thực. & Nbsp; hãy thử nó & nbsp; ngay hôm nay!

Bài viết liên quan:

  • về tác giả

Hướng dẫn how do i execute a stored procedure in mysql? - làm cách nào để thực hiện một thủ tục được lưu trữ trong mysql?

13.2.1 & NBSP; Câu lệnh gọi

CALL sp_name([parameter[,...]])
CALL sp_name[()]

Tuyên bố CALL gọi một quy trình được lưu trữ được xác định trước đó với CREATE PROCEDURE.

Các thủ tục được lưu trữ không có đối số nào có thể được gọi mà không có dấu ngoặc đơn. Đó là, CALL p()CALL p là tương đương.

CALL có thể chuyển các giá trị trở lại cho người gọi bằng các tham số được khai báo là

mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 hoặc
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2 tham số. Khi thủ tục trả về, một chương trình máy khách cũng có thể có được số lượng hàng bị ảnh hưởng cho câu lệnh cuối cùng được thực thi trong thói quen: ở cấp SQL, hãy gọi hàm
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
3; Từ API C, hãy gọi hàm
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
4.

Để biết thông tin về ảnh hưởng của các điều kiện chưa được xử lý đối với các tham số thủ tục, xem Phần & NBSP; 13.6.7.8, Xử lý điều kiện và ra các tham số hoặc ra các tham số.

Để lấy lại giá trị từ một thủ tục bằng tham số

mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 hoặc
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2, hãy truyền tham số bằng biến người dùng, sau đó kiểm tra giá trị của biến sau khi thủ tục trả về. . Quy trình sau đây có tham số
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 mà quy trình đặt thành phiên bản máy chủ hiện tại và giá trị
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2 mà quy trình tăng lên từ giá trị hiện tại của nó:

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;

Trước khi gọi quy trình, khởi tạo biến sẽ được truyền dưới dạng tham số

mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2. Sau khi gọi thủ tục, bạn có thể thấy rằng các giá trị của hai biến được đặt hoặc sửa đổi:

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+

Trong các câu lệnh CALL được sử dụng với

CALL sp_name([parameter[,...]])
CALL sp_name[()]
4 và
CALL sp_name([parameter[,...]])
CALL sp_name[()]
5, các giữ chỗ có thể được sử dụng cho các tham số
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
7,
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 và các tham số
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2. Các loại tham số này có thể được sử dụng như sau:

mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+

Để viết các chương trình C sử dụng câu lệnh CALL SQL để thực hiện các quy trình được lưu trữ tạo ra các bộ kết quả, cờ

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 phải được bật. Điều này là do mỗi CALL trả về kết quả để chỉ ra trạng thái cuộc gọi, ngoài bất kỳ bộ kết quả nào có thể được trả về bởi các câu lệnh được thực thi trong quy trình.
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 cũng phải được bật nếu CALL được sử dụng để thực hiện bất kỳ quy trình được lưu trữ nào có chứa các câu lệnh đã chuẩn bị. Không thể xác định được khi một thủ tục như vậy được tải cho dù các câu lệnh đó tạo ra các bộ kết quả, vì vậy cần phải cho rằng họ làm như vậy.

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 có thể được bật khi bạn gọi
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
5, rõ ràng bằng cách vượt qua cờ
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 hoặc hoàn toàn bằng cách vượt qua
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
7 (cũng cho phép
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0).
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 được bật theo mặc định.

Để xử lý kết quả của câu lệnh CALL được thực thi bằng cách sử dụng

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
1 hoặc
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
2, hãy sử dụng một vòng lặp gọi
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
3 để xác định xem có nhiều kết quả hơn không. Ví dụ, xem hỗ trợ thực thi nhiều câu lệnh.

Các chương trình C có thể sử dụng giao diện đã chuẩn bị để thực hiện các câu lệnh CALL và truy cập các tham số

mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 và
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2. Điều này được thực hiện bằng cách xử lý kết quả của câu lệnh CALL bằng cách sử dụng vòng lặp gọi
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 để xác định xem có nhiều kết quả hơn không. Ví dụ, xem hỗ trợ câu lệnh gọi đã chuẩn bị. Các ngôn ngữ cung cấp giao diện MySQL có thể sử dụng các câu lệnh CALL để truy xuất trực tiếp các tham số thủ tục
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
1 và
mysql> DELIMITER //

mysql> CREATE PROCEDURE Get_Products()
       BEGIN
       SELECT *  FROM products;
       END //

mysql> DELIMITER ;
mysql> call get_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+
2.

Các thay đổi siêu dữ liệu đối với các đối tượng được đề cập bởi các chương trình được lưu trữ được phát hiện và gây ra tự động lặp lại các câu lệnh bị ảnh hưởng khi chương trình được thực hiện tiếp theo. Để biết thêm thông tin, hãy xem Phần & NBSP; 8.10.3, Bộ nhớ đệm của các câu lệnh đã chuẩn bị và các chương trình được lưu trữ.

Làm cách nào để thực hiện một thủ tục được lưu trữ?

Trong Object Explorer, kết nối với một thể hiện của công cụ cơ sở dữ liệu SQL Server, mở rộng thể hiện đó và sau đó mở rộng cơ sở dữ liệu. Mở rộng cơ sở dữ liệu mà bạn muốn, mở rộng khả năng lập trình và sau đó mở rộng các quy trình được lưu trữ. Nhấp chuột phải vào quy trình được lưu trữ do người dùng xác định mà bạn muốn và chọn thực thi thủ tục được lưu trữ.Right-click the user-defined stored procedure that you want and select Execute Stored Procedure.

Làm cách nào để thực hiện một quy trình được lưu trữ với các tham số trong MySQL?

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

Bạn có thể thực hiện một quy trình được lưu trữ trong cơ sở dữ liệu không?

Các quy trình được lưu trữ SQL cho SQL Server, vì vậy nếu bạn có truy vấn SQL mà bạn viết nhiều lần, hãy lưu nó dưới dạng quy trình được lưu trữ, và sau đó chỉ cần gọi nó để thực hiện nó.Bạn cũng có thể chuyển các tham số cho một quy trình được lưu trữ, để quy trình được lưu trữ có thể hoạt động dựa trên (các) giá trị tham số được thông qua.

Lệnh để thực hiện thủ tục được lưu trữ trong SQL là gì?

Lệnh EXEC được sử dụng để thực thi quy trình được lưu trữ hoặc chuỗi SQL được truyền cho nó.Bạn cũng có thể sử dụng Full Command Execute giống như Exec.EXEC command is used to execute a stored procedure, or a SQL string passed to it. You can also use full command EXECUTE which is the same as EXEC.