создание функции mysql с использованием phpmyadmin

Я хочу ввести следующую функцию, чтобы подсчитать количество завершенных задач из таблицы MySQL в phpmyadmin, но она всегда возвращает не описательную ошибку:

 DELIMITER $$
 CREATE FUNCTION `num_completed`(v1 INT)
 RETURNS INT
 BEGIN
 DECLARE icm INT;
 SELECT SUM(IF(completed='yes',1,0)) AS completed INTO icm FROM ri_t_course_progress WHERE enrollment_id=v1;
 RETURN icm;
 END$$

Сам запрос должен быть правильным. Я проверил его и вернул желаемый результат. Кто-нибудь знает, что случилось?

0
nl ja de
Какая у вас ошибка? Я вставил SQL в MySQL и создал функцию без ошибок.
добавлено автор Joni, источник
попробуйте разместить ICM OUT в первой строке create function ....
добавлено автор jcho360, источник
Я пробовал это на моем phpmyadmin, но я получаю эту ошибку # 1415 - Не разрешено возвращать набор результатов из функции
добавлено автор ZenOut, источник

1 ответы

Вам нужно назначить результат SELECT в переменную. Вот один из способов:

 SELECT SUM(IF(completed='yes',1,0)) INTO icm 
 FROM ri_t_view_course_progress WHERE enrollment_id=v1;
1
добавлено
Ты прав. Я пропустил это полностью. Однако ... Он по-прежнему не дает описательного сообщения об ошибке, когда я ввожу его в MySQL следующим образом: DELIMITER $$ CREATE FUNCTION num_completed (v1 INT) RETURNS INT BEGIN DECLARE icm INT; SELECT SUM (IF (завершено = 'да', 1,0)) INTO icm FROM ri_t_course_progress WHERE enrollment_id = v1; RETURN icm; END $$
добавлено автор Amelia, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw