【问题标题】:How to set a variable as query result in a MySQL stored procudure?如何在 MySQL 存储过程中将变量设置为查询结果?
【发布时间】:2012-03-13 14:00:18
【问题描述】:
一个相当简单的问题,但我只能找到更复杂问题的答案。
我正在处理一个存储过程,目前正在重复循环中。我需要在循环中运行以下查询以获取返回的 1 列值(将仅返回 1 条记录)。这需要存储为 var 以便稍后在循环中使用。
SELECT photo_id FROM photos ORDER BY photo_id DESC LIMIT 1;
如何将其设置为“last_photo_id”以便稍后在存储过程中使用?
【问题讨论】:
标签:
mysql
sql
stored-procedures
percona
【解决方案1】:
你可以做这样的事情:
SELECT @varname := photo_id
FROM photos
ORDER BY photo_id DESC
LIMIT 1;
也就是说,如果您确定除了循环之外没有其他方法可以做您想做的事情。将 For SQL 用于基于集合的解决方案时效果最佳。
【解决方案2】:
试试这个:
DECLARE total_products INT DEFAULT 0
SELECT COUNT INTO total_products
FROM products
【解决方案3】:
你可以使用函数
比如
SET i_camera_count = get_camera_count(i_photo_camera_data_id);
然后做一个这样的函数。
DELIMITER $$
DROP FUNCTION IF EXISTS `get_camera_count` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `get_camera_count`(camera_id_2 INT(10)) RETURNS int(11)
BEGIN
DECLARE v_return_val INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1;
SELECT x FROM y WHERE camera_id = camera_id_2
RETURN v_return_val;
END $$
DELIMITER ;