Создать функцию, которая возвращает результат оператора «SELECT» - PullRequest
0 голосов
/ 10 мая 2019

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

Я следовал некоторым учебникам, но ни один из них не помог мне.Когда я пытаюсь создать функцию, mysql workbench говорит: «Код ошибки: 1415. Не разрешено возвращать набор результатов из функции»

Вот что я пытаюсь сделать

delimiter $$
    create function findObject(workName VARCHAR(45)) returns VARCHAR(250)
    begin
    SELECT result= ar.artistName FROM artist as ar, art_object as oa
            where ar.artistCode= oa.artistCode
            and oa.title= workName 
            group by ar.artistName ;
    return result;
    end$$
delimiter ;

1 Ответ

2 голосов
/ 10 мая 2019

Это не то, как вы присваиваете результат переменной в операторе SELECT. Вы должны использовать SELECT ... INTO variable.

Вам также нужно сначала объявить переменную.

delimiter $$
create function findObject(workName VARCHAR(45)) returns VARCHAR(250)
begin
    DECLARE result VARCHAR(250);
    SELECT DISTINCT ar.artistName FROM artist as ar, art_object as oa
    INTO result
    where ar.artistCode= oa.artistCode
    and oa.title= workName;
    return result;
end$$
delimiter ;

SELECT result = ar.artistName сравнивает значение result с ar.artistName и возвращает результат этого сравнения из оператора SELECT.

...