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.