nezabor
@nezabor
Решаю вопросы по мере их б@яя чеделать, че делать!

Как исправить функцию?

помогите создать функцию
честно говоря в mysql такое делаю впервые
CREATE DEFINER = CURRENT_USER FUNCTION `GetMailAcc`(`in_domen_id` int)
    RETURNS varchar(255)
BEGIN
    DECLARE result_str VARCHAR(255);
    SELECT COUNT(1) AS result_id  FROM L_mail_account AS MA WHERE MA.domen_id = in_domen_id LIMIT 1;
    IF result_id > 0 THEN
        SELECT id FROM L_mail_account ORDER BY last_upd DESC LIMIT 1;
    ELSE
        SELECT MA.id FROM L_mail_account AS MA WHERE MA.domen_id = in_domen_id LIMIT 1;
    END IF;
    RETURN id;
END;


говорит что не может сохранить
1415 - Not allowed to return a result set from a function
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
nezabor
@nezabor Автор вопроса
Решаю вопросы по мере их б@яя чеделать, че делать!
вопрос решился передачей значения в переменную
CREATE DEFINER=`root`@`%` FUNCTION `GetMailAcc`(`in_domen_id` int) RETURNS int(11)
BEGIN

DECLARE result_str, count_str INT(11);

	SET count_str = (
			SELECT COUNT(1) AS QTY  
			FROM L_mail_account AS MA 
			WHERE MA.domen_id = in_domen_id 
			ORDER BY last_upd DESC 
			LIMIT 1
		);

	IF count_str > 0 THEN
		SET result_str = (SELECT MA.id FROM L_mail_account AS MA WHERE MA.domen_id = in_domen_id LIMIT 1);
	ELSE
		SET result_str = (SELECT id FROM L_mail_account ORDER BY last_upd DESC LIMIT 1);
	END IF;


	RETURN result_str;
END

но остался другой вопрос(((
Как исправить update +1 в функции?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы