0

我有以下存储过程:

DELIMITER ///

CREATE PROCEDURE tmp_test_proc(__TABLE__NAME varchar(255))
BEGIN
  SELECT COUNT(*) FROM __TABLE__NAME;
END///

DELIMITER ;

我想从参数中选择__TABLE__NAME,但 MySQL 告诉我没有表__TABLE__NAME......那么有没有办法在 from 子句中使用参数的值?

4

1 回答 1

2

默认情况下,您不能参数化表名(以及列名),您需要为此创建PreparedStatement

DELIMITER ///

CREATE PROCEDURE tmp_test_proc(__TABLE__NAME varchar(255))
BEGIN
    SET @sql = CONCAT('SELECT COUNT(*) FROM ', __TABLE__NAME);

    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END///

DELIMITER ;
于 2013-01-31T13:12:39.317 回答