Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thủ tục lưu trữ MySQL với các tham số

Đôi khi bạn có thể cần chuyển đầu vào cho thủ tục được lưu trữ trong MySQL. Trong bài viết này, chúng ta sẽ xem xét cách tạo thủ tục lưu trữ MySQL với các tham số và các loại tham số khác nhau được hỗ trợ trong các thủ tục được lưu trữ.

Thủ tục lưu trữ MySQL với các tham số

Dưới đây là các bước để tạo thủ tục được lưu trữ với các tham số. MySQL hỗ trợ 3 loại tham số thủ tục được lưu trữ - IN, OUT và INOUT. Hãy để chúng tôi xem xét từng chi tiết trong số chúng

VÀO - Đây là chế độ mặc định. Trong chế độ này, câu lệnh gọi phải chuyển đối số cho thủ tục được lưu trữ. Ngoài ra, giá trị của thông số kiểu IN được bảo vệ, có nghĩa là ngay cả khi bạn thay đổi giá trị của nó bên trong thủ tục được lưu trữ, nó sẽ vẫn không thay đổi bên ngoài nó.

HẾT - Giá trị của tham số OUT có thể được thay đổi bên trong thủ tục được lưu trữ và giá trị mới của nó sẽ được chuyển trở lại câu lệnh gọi.

GIỚI THIỆU - Trong trường hợp này, câu lệnh gọi có thể truyền một đối số và thủ tục được lưu trữ có thể sửa đổi giá trị này và chuyển nó trở lại câu lệnh gọi.

Đây là cú pháp của thủ tục được lưu trữ với các tham số trong MySQL.

[IN | OUT | INOUT] parameter_name datatype[(length)]

Trong câu lệnh trên, trước tiên chúng ta chỉ định kiểu tham số, sau đó là tên tham số và kiểu cột.

Thủ tục lưu trữ MySQL với các ví dụ về tham số

Hãy cùng chúng tôi xem xét một số ví dụ về thủ tục được lưu trữ với các tham số.

Tham số IN

Đây là truy vấn SQL để tạo quy trình được lưu trữ với tham số IN.

mysql> DELIMITER //

mysql> CREATE PROCEDURE get_product(
       IN prod_id int
       )
       BEGIN
       SELECT *
        FROM products
       WHERE product_id = prod_id;
       END //

mysql> DELIMITER ;
mysql> call get_product(1);
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

mysql> call get_product();
ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE sample.get_product; expected 1, got 0

Ở trên, chúng tôi đã xác định tham số thủ tục được lưu trữ IN prod_id . Khi chúng ta chuyển đối số của nó trong câu lệnh gọi, thủ tục được lưu trữ sẽ trả về kết quả mong đợi. Tuy nhiên, nếu bạn không vượt qua đối số thì đối số đó sẽ xảy ra lỗi.

Phần thưởng đọc:Cách tạo khóa chính tổng hợp trong MySQL

Tham số OUT

Đây là quy trình được lưu trữ được tạo bằng tham số OUT.

mysql> DELIMITER $$

mysql> CREATE PROCEDURE get_count(
       IN prod_id int,
       OUT total INT
       )
       BEGIN
       SELECT COUNT(*)
       INTO total
       FROM products
       WHERE product_id = prod_id;
       END$$

mysql> DELIMITER ;

mysql> call get_count(1,@total);

mysql> select @total;
+--------+
| @total |
+--------+
|      1 |
+--------+

Trong thủ tục được lưu trữ ở trên, chúng tôi xác định 2 tham số - một tham số IN cho prod_id và một tham số OUT để lưu trữ kết quả của thủ tục.

Khi chúng tôi chuyển id sản phẩm trong câu lệnh gọi, quy trình được lưu trữ của chúng tôi sẽ tính số hàng khớp với id sản phẩm này và lưu trữ kết quả trong tham số OUT total

Phần thưởng đọc:Cách cắt ngắn bảng trong MySQL

THÔNG SỐ GIỚI THIỆU

Đây là quy trình được lưu trữ được tạo bằng tham số INOUT.

DELIMITER $$

CREATE PROCEDURE counter(
	INOUT count INT,
    IN increment INT
)
BEGIN
	SET count = count + increment;
END$$

DELIMITER ;

Trong quy trình được lưu trữ ở trên, chúng tôi đã xác định một tham số IN gia số và thông số INOUT count nơi lưu trữ kết quả của thủ tục được lưu trữ. Thủ tục được lưu trữ của chúng tôi về cơ bản thêm gia số để đếm tham số và lưu trữ kết quả dưới dạng count tham số.

mysql> SET @count = 10;

mysql> CALL counter(@count,1);

mysql> SELECT @count;
+--------+
| @count |
+--------+
|     11 |
+--------+

Hy vọng rằng bây giờ bạn có thể dễ dàng tạo thủ tục được lưu trữ với các tham số trong MySQL.

Phần thưởng đã đọc:CHẾ ĐỘ XEM DROP của MySQL

Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kiểm tra cơ sở dữ liệu MySQL và kích thước bảng

  2. MySQL Workbench

  3. Cách lấy năm từ cột ngày giờ trong MySQL

  4. Khi nào sử dụng MongoDB hoặc các hệ thống cơ sở dữ liệu hướng tài liệu khác?

  5. Lỗi MySQL / PHP:[2002] Chỉ cho phép một lần sử dụng mỗi địa chỉ socket (giao thức / địa chỉ mạng / cổng)