如何通过将表的名称作为MySQL存储过程的参数来获取表的所有记录?

假设如果我们想通过将表的名称作为存储过程的参数来查看表的所有记录,则下面的示例将创建一个名为“ details”的过程,该过程接受表的名称作为其参数-

mysql> DELIMITER //
mysql> Create procedure details(tab_name Varchar(40))
   -> BEGIN
   -> SET @t:= CONCAT('Select * from',' ',tab_name);
   -> Prepare stmt FROM @t;
   -> EXECUTE stmt;
   -> END //

现在通过提供表名称作为其参数来调用此过程,它将显示该表的所有记录。

mysql> DELIMITER;
mysql> CALL details('student_detail');
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|       100 | Gaurav      | Delhi      |
|       101 | Raman       | Shimla     |
|       103 | Rahul       | Jaipur     |
|       104 | Ram         | Chandigarh |
|       105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
5 rows in set (0.02 sec)
猜你喜欢