Как установить переменную как результат запроса в хранимой процедуре MySQL? - PullRequest
0 голосов
/ 13 марта 2012

Довольно простой вопрос, но я могу найти ответы только на более сложные вопросы.

Я работаю над сохраненной процедурой и в настоящее время нахожусь в цикле REPEAT.Мне нужно выполнить следующий запрос в цикле, чтобы получить значение 1 столбца, который возвращается (будет возвращена только 1 запись).Это нужно будет сохранить как переменную для последующего использования в цикле.

ВЫБРАТЬ photo_id ИЗ фотографий ORDER BY photo_id DESC LIMIT 1;

Как установитьчто до 'last_photo_id', который будет использоваться позже в хранимой процедуре?

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Вы могли бы сделать что-то вроде этого:

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

То есть, если вы уверены, что нет другого способа сделать то, что вы хотите сделать, кроме как в цикле. Для SQL лучше всего работает, когда вы используете его для решений на основе множеств.

0 голосов
/ 13 марта 2012

Попробуйте это:

 DECLARE total_products INT DEFAULT 0
 SELECT COUNT  INTO total_products
 FROM products 
0 голосов
/ 13 марта 2012

Вы можете использовать функцию Так например

  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 ;
...