如何使用动态 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 ;
在我编写的过程中,我需要将动态 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 ;