如何在MySQL存储过程中将变量设置为查询结果?

时间:2012-03-13 14:00:18

标签: mysql sql stored-procedures percona

一个相当简单的问题,但我只能找到更复杂问题的答案。

我正在处理存储的procudure,目前正处于REPEAT循环中。我需要在循环中运行以下查询以获取返回的1列值(仅返回1条记录)。这将需要存储为var,以便稍后在循环中使用。

  

SELECT photo_id FROM photos ORDER BY photo_id DESC LIMIT 1;

如何将其设置为'last_photo_id'以便稍后在存储过程中使用?

3 个答案:

答案 0 :(得分:1)

可以做这样的事情:

SELECT @varname := photo_id
FROM photos
ORDER BY photo_id DESC
LIMIT 1;

也就是说,如果你确定没有其他方法可以做你想做的事情而不是循环。对于SQL,在将其用于基于集合的解决方案时效果最佳。

答案 1 :(得分:0)

您可以使用某项功能 例如,

  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 ;

答案 2 :(得分:0)

试试这个:

 DECLARE total_products INT DEFAULT 0
 SELECT COUNT  INTO total_products
 FROM products