我有以下存储过程:
DELIMITER ///
CREATE PROCEDURE tmp_test_proc(__TABLE__NAME varchar(255))
BEGIN
SELECT COUNT(*) FROM __TABLE__NAME;
END///
DELIMITER ;
我想从参数中选择__TABLE__NAME
,但 MySQL 告诉我没有表__TABLE__NAME
......那么有没有办法在 from 子句中使用参数的值?
我有以下存储过程:
DELIMITER ///
CREATE PROCEDURE tmp_test_proc(__TABLE__NAME varchar(255))
BEGIN
SELECT COUNT(*) FROM __TABLE__NAME;
END///
DELIMITER ;
我想从参数中选择__TABLE__NAME
,但 MySQL 告诉我没有表__TABLE__NAME
......那么有没有办法在 from 子句中使用参数的值?
默认情况下,您不能参数化表名(以及列名),您需要为此创建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 ;