Prepared statement trong stored procedure phải viết trong khối BEGIN...END. Ví dụ thủ tục nhận tên bảng, trả về toàn bộ dữ liệu:
mysql> DELIMITER //
mysql> CREATE PROCEDURE tbl_detail(tab_name VARCHAR(40))
-> BEGIN
-> SET @A := CONCAT('SELECT * FROM ', tab_name);
-> PREPARE stmt FROM @A;
-> EXECUTE stmt;
-> END //
Query OK, 0 rows affected (0.00 sec)
Gọi thủ tục:
mysql> DELIMITER;
mysql> CALL tbl_detail('Student');
+------+--------+
| Id | Name |
+------+--------+
| 1 | Ram |
| 2 | Shyam |
| 3 | Gaurav |
+------+--------+
Quy trình: xây dựng SQL động → PREPARE → EXECUTE. Phải trong BEGIN/END.