У меня есть функция MySQL с 2 параметра, а именно ID пользователя и post_id
Вот моя функция:
CREATE FUNCTION isliked(pid INT, uid INT)
RETURN TABLE
AS
RETURN (EXISTS (SELECT 1 FROM likedata ld WHERE post_id = pid AND user_id = uid
)) as is_liked
END
Я попытался вызвать это с помощью следующего запроса:
SELECT posts.id, posts.title, isliked(111,123)
FROM posts
Он возвращает следующую ошибку:
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 'RETURN TABLE
AS
RETURN (EXISTS (SELECT 1 FROM likedata ld WHERE post_id = pid AN' at line 2
Должны быть результаты вроде этого http://sqlfiddle.com/#!9/91040/5 Я новичок в sql, любая помощь будет отличной, заранее спасибо
Разве у вас нет 2 '(' в вашей функции, но 3 ')'?
Вероятно, вы захотите вернуть логическое значение / бит, а не таблицу. Вам нужно только одно значение, и похоже, вы хотите использовать его в предложении select.
Да, пожалуйста, проверьте мой код и помогите @Horia Coman
Каков ожидаемый результат? Что вы хотите, чтобы функция isliked возвращала?
Он вернет логическое значение, т.е. если понравилось, то 1 иначе 0






Если вы хотите, чтобы функция возвращала логическое значение, используйте:
CREATE FUNCTION isliked(pid INT, uid INT)
RETURNS BIT
RETURN ( EXISTS ( SELECT 1 FROM likedata ld WHERE post_id = pid AND user_id = uid ) )
у вашей функции есть синтаксическая проблема. зайдите на сайт офисного mysql и найдите синтаксис того, что на самом деле делает синтаксис, и внесите соответствующие изменения