一個相當簡單的問題,但我只能找到更復雜問題的答案。如何在MySQL存儲過程中將變量設置爲查詢結果?
我正在處理存儲的procudure,目前正在REPEAT循環中。我需要在循環中運行以下查詢以獲取返回的1列值(僅返回1條記錄)。這將需要被存儲爲一個var以供稍後在循環中使用。
SELECT photo_id FROM photos ORDER BY photo_id DESC LIMIT 1;
如何設置'last_photo_id'以便稍後在存儲過程中使用?
一個相當簡單的問題,但我只能找到更復雜問題的答案。如何在MySQL存儲過程中將變量設置爲查詢結果?
我正在處理存儲的procudure,目前正在REPEAT循環中。我需要在循環中運行以下查詢以獲取返回的1列值(僅返回1條記錄)。這將需要被存儲爲一個var以供稍後在循環中使用。
SELECT photo_id FROM photos ORDER BY photo_id DESC LIMIT 1;
如何設置'last_photo_id'以便稍後在存儲過程中使用?
試試這個:
DECLARE total_products INT DEFAULT 0
SELECT COUNT INTO total_products
FROM products
您可以使用函數 因此,例如
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 ;
您可以做這樣的事情:
SELECT @varname := photo_id
FROM photos
ORDER BY photo_id DESC
LIMIT 1;
也就是說,如果你確信沒有其他辦法可以做到你想要什麼做比在一個循環。對於將SQL用於基於集合的解決方案時,SQL的效果最好。