Ошибка пользовательской функции MySQL

#mysql #user-defined-functions

#mysql #определяемые пользователем функции

Вопрос:

Я пытаюсь создать пользовательскую функцию, которая будет принимать идентификатор пользователя в качестве аргумента, а затем отображать столбец retailPrice для этой конкретной строки. Можете ли вы сказать мне, где я ошибаюсь?

 DELIMITER $$

CREATE FUNCTION itemPrice(uId DECIMAL(8,2))
RETURNS DECIMAL(8,2)
READS SQL DATA
BEGIN 
    DECLARE r DECIMAL(8,2)
    SELECT INTO retailPrice r FROM item WHERE userId = uId;
    RETURN(r);
END$$

DELIMITER ;
  

Комментарии:

1. SELECT retailPrice INTO r

2. Вам также понадобится ; в конце DECLARE строки.

Ответ №1:

Вы пропускаете ; между DECLARE инструкцией и SELECT запросом. И у вас есть INTO в неправильном месте в запросе.

РАЗДЕЛИТЕЛЬ $$

 CREATE FUNCTION itemPrice(uId DECIMAL(8,2))
RETURNS DECIMAL(8,2)
READS SQL DATA
BEGIN 
    DECLARE r DECIMAL(8,2);
    SELECT retailPrice INTO r FROM item WHERE userId = uId;
    RETURN(r);
END$$

DELIMITER ;