Здравствуйте!
Внутри итераций курсора я использую конструкцию IF, чтоб выбирать нужные мне значения. Если я сразу делаю SELECT всех переменных то запрос возвращает только одно, первое значение. Как мне сохранить эти данные в какую нибудь переменную и вернуть их по заверщении процедуры?
SQL процедуры:
DELIMITER //
CREATE PROCEDURE `getActivity`(IN leftVar INT, IN rightVar INT)
BEGIN
DECLARE activityID INTEGER;
DECLARE userID INTEGER;
DECLARE countSteps INTEGER;
DECLARE date INTEGER;
DECLARE global_steps INTEGER DEFAULT 0;
DECLARE done INTEGER DEFAULT 0;
DECLARE ActivityCursor CURSOR FOR
SELECT
a.id,
a.user_id,
a.count_steps,
a.date
FROM
`activity` AS a
ORDER BY count_steps;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN ActivityCursor;
WHILE done = 0 DO
FETCH ActivityCursor INTO activityID, userID, countSteps, date;
SET global_steps = global_steps + countSteps;
IF global_steps > leftVar AND global_steps <= rightVar THEN
SELECT activityID, userID, countSteps, date, global_steps;
END IF;
IF global_steps > rightVar THEN
SET done = 1;
END IF;
END WHILE;
CLOSE ActivityCursor;
END //
Отредактированно Manson (06.04.2013 14:27:42)