Computer >> Máy Tính >  >> Lập trình >> MySQL

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


Để hiểu rõ, chúng tôi đang sử dụng bảng có tên ‘student_info’ có các giá trị sau -

mysql> Select * from student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Jaipur     | Literature |
| 110  | Rahul   | Chandigarh | History    |
| 125  | Raman   | Shimla     | Computers  |
+------+---------+------------+------------+
4 rows in set (0.00 sec)

Bây giờ, với sự trợ giúp của truy vấn sau, chúng ta sẽ tạo một thủ tục được lưu trữ với tham số OUT sẽ đếm tổng của một chủ đề cụ thể bằng cách cung cấp tên chủ đề làm tham số.

mysql> DELIMITER // ;
mysql> Create Procedure subjects (IN S_Subject VARCHAR(25), OUT total INT)
   -> BEGIN
   -> SELECT count(subject)
   -> INTO total
   -> FROM student_info
   -> WHERE subject = S_subject;
   -> END //
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;

‘S-Subject’ là tham số IN là số môn học chúng ta muốn đếm và ‘total’ là tham số OUT lưu trữ số lượng môn học cho một chủ đề cụ thể.

mysql> CALL subjects('Computers', @total);
Query OK, 1 row affected (0.02 sec)

mysql> Select @total;
+--------+
| @total |
+--------+
|      1 |
+--------+
1 row in set (0.01 sec)

mysql> CALL subjects('History', @total);
Query OK, 1 row affected (0.00 sec)

mysql> Select @total;
+--------+
| @total |
+--------+
|      2 |
+--------+
1 row in set (0.00 sec)