我有以下存储过程:
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 ;
关于MySQL 存储过程 - 如何在 FROM 子句中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626569/