Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truyền mảng vào stored routine MySQL?


MySQL không có kiểu mảng gốc. Dùng chuỗi phân cách bằng dấu phẩy + hàm FIND_IN_SET() trong stored procedure.

Tạo bảng

mysql> CREATE TABLE FindDemo (Name VARCHAR(100));
Query OK, 0 rows affected (0.46 sec)
mysql> INSERT INTO FindDemo VALUES('John'),('Smith');
Query OK, 2 rows affected (0.13 sec)
mysql> SELECT * FROM FindDemo;
+-------+
| Name  |
+-------+
| John  |
| Smith |
+-------+
2 rows in set (0.00 sec)

Tạo stored procedure nhận chuỗi CSV

mysql> DELIMITER //
mysql> CREATE PROCEDURE SearchingStoredProcedure(IN ArrayDemo VARCHAR(100))
    -> BEGIN
    -> SELECT * FROM FindDemo WHERE FIND_IN_SET(Name, ArrayDemo);
    -> END//
Query OK, 0 rows affected (0.14 sec)

Gọi procedure với 'mảng'

mysql> DELIMITER ;
mysql> CALL SearchingStoredProcedure('David,Bob,John');
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)

Chỉ trả về 'John' vì có trong cả bảng và chuỗi tham số.