Мне нужно изменить все значения в столбце с помощью функции.Я написал функцию и добавил ее в хранимую функцию.Я написал хранимую процедуру, которая будет перебирать все значения в столбце с помощью курсора и переключать значения.
Это сервер Windows, на котором запущен wamp, php 5.6, mysql 5.0. Также пробовал сервер linux ec2 с mysql 5.6.
DELIMITER $$
DROP PROCEDURE IF EXISTS `my_proc` $$
CREATE PROCEDURE `my_proc`()
BEGIN
DECLARE val1 INT DEFAULT NULL;
DECLARE val2 INT DEFAULT NULL;
DECLARE done TINYINT DEFAULT FALSE;
DECLARE cursor1 CURSOR FOR SELECT `col1` FROM `table1` WHERE 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cursor1;
my_loop:
LOOP
FETCH NEXT FROM cursor1 INTO val1;
IF done = TRUE THEN
LEAVE my_loop;
ELSE
SET val2 = CALL the_other_procedure1(val1);
UPDATE `table1`
SET `col1` = val2
WHERE `col1` = val1 ;
END IF;
END LOOP my_loop;
END $$
DELIMITER ;
При запуске в разделе sql phpmyadmin я получаю 2 ошибки: Во время анализа были обнаружены 1 ошибки.
Unexpected character. (near ":" at position 364)
и:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CALL the_other_procedure1(val1);
UPDATE `table1`
SET `col1` = val2
WHER' at line 25
Здесь - пример обновления в той же таблице, из которой мы читаем.