如何使用动态 SQL (MySQL) 将查询结果存储到局部变量中?

How Do I Use Dynamic SQL (MySQL) To Store The Result of a Query Into a Local Variable?

在我编写的过程中,我需要将动态 SQL 查询的结果存储到局部变量中。像这样:

DELIMITER //
CREATE PROCEDURE test_maxsum(uid varchar(25))
BEGIN

    DECLARE maxsum int;
    SET @SQL = CONCAT('SELECT MAX(sum_val) FROM ', uid);
            PREPARE stmt FROM @SQL;
            EXECUTE stmt INTO maxsum;
            DEALLOCATE PREPARE stmt;
    SELECT maxsum;
END//

DELIMITER ;

局部变量不能在预处理语句中赋值。不过,您可以使用 user-defined 变量:

DELIMITER //
CREATE PROCEDURE test_maxsum(uid varchar(25))
BEGIN
    SET @SQL = CONCAT('SELECT MAX(sum_val) INTO @maxsum FROM ', uid);
    PREPARE stmt FROM @SQL;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

    SELECT @maxsum;
END//

DELIMITER ;