In MySQL: How to pass a table name as stored procedure and/or function argument?

后端 未结 2 1764

For instance, this does not work:

DELIMITER //
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
  BEGIN
    SELECT COUNT(*) as ct FROM tbl_name;
  END //

DE         


        
2条回答
  •  無奈伤痛
    2020-12-14 08:23

    You can do it like this:

     DROP PROCEDURE IF EXISTS `getDataUsingSiteCode`;
        DELIMITER $$
        CREATE PROCEDURE `getDataUsingSiteCode`(
              IN tab_name VARCHAR(40), 
              IN site_ VARCHAR(255)
           )
            BEGIN
              SET @site_code = site_;
              SET @sql_ =CONCAT('SELECT * FROM ',tab_name,' WHERE site=?');
              PREPARE statement_ FROM @sql_;
              EXECUTE statement_ using @site_code;
            END$$
        DELIMITER ;
    

提交回复
热议问题