2012-03-13 76 views
0

一个相当简单的问题,但我只能找到更复杂问题的答案。如何在MySQL存储过程中将变量设置为查询结果?

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

SELECT photo_id FROM photos ORDER BY photo_id DESC LIMIT 1;

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

回答

0

试试这个:

DECLARE total_products INT DEFAULT 0 
SELECT COUNT INTO total_products 
FROM products 
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 ; 
1

可以做这样的事情:

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

也就是说,如果你确信没有其他办法可以做到你想要什么做比在一个循环。对于将SQL用于基于集合的解决方案时,SQL的效果最好。

相关问题