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

Làm cách nào để tạo một thủ tục được lưu trữ MySQL trả về nhiều giá trị từ một bảng MySQL?


Chúng tôi có thể tạo một thủ tục được lưu trữ với cả IN HẾT tham số để nhận nhiều giá trị từ một bảng MySQL. Để dễ hiểu, chúng tôi đang lấy một ví dụ về một bảng có tên ‘student_info’ có dữ liệu sau -

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

Bây giờ, bằng cách tạo thủ tục có tên là ‘select_studentinfo’ như sau, chúng ta có thể chọn các giá trị từ bảng ‘student_info’ bằng cách cung cấp giá trị của ‘id’ -

mysql> DELIMITER // ;
mysql> Create Procedure Select_studentinfo ( IN p_id INT, OUT p_name varchar(20),OUT p_address varchar(20), OUT p_subject varchar(20))
    -> BEGIN
    -> SELECT name, address, subject INTO p_name, p_address, p_subject
    -> FROM student_info
    -> WHERE id = p_id;
    -> END //
Query OK, 0 rows affected (0.03 sec)

Trong truy vấn trên, cùng với 1 tham số IN, nó cũng nhận 4 tham số OUT. Bây giờ, gọi thủ tục với các giá trị mà chúng tôi muốn cung cấp với điều kiện như sau -

mysql> DELIMITER ; //
mysql> CALL Select_studentinfo(110, @p_name, @p_address, @p_subject);
Query OK, 1 row affected (0.06 sec)

mysql> Select @p_name AS Name,@p_Address AS Address, @p_subject AS Subject;
+--------+------------+-----------+
| Name   | Address    | Subject   |
+--------+------------+-----------+
| Rahul  | Chandigarh | History   |
+--------+------------+-----------+
1 row in set (0.00 sec)