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

Tạo stored procedure nhận tên database làm tham số để liệt kê bảng chi tiết

Mở rộng từ bài trước: thủ tục nhận tên database làm tham số.

Database query có 2 bảng:

mysql> SHOW TABLES IN query;
+-----------------+
| Tables_in_query |
+-----------------+
| student_detail  |
| student_info    |
+-----------------+

Tạo thủ tục tb_list(db_name):

mysql> DELIMITER//
mysql> CREATE PROCEDURE tb_list(db_name VARCHAR(40))
    -> BEGIN
    -> SET @z := CONCAT('SELECT * FROM information_schema.tables WHERE table_schema = \'', db_name, '\'');
    -> PREPARE stmt FROM @z;
    -> EXECUTE stmt;
    -> END //
Query OK, 0 rows affected (0.06 sec)

Gọi thủ tục:

mysql> CALL tb_list('query')\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: query
TABLE_NAME: student_detail
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 4
...
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: query
TABLE_NAME: student_info
...

Dùng SQL động với tham số database name để truy vấn information_schema.tables.