Ошибка в функции MySQL с параметрами

У меня есть функция 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, любая помощь будет отличной, заранее спасибо

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

Ankit Agrawal 28.05.2018 07:35

Разве у вас нет 2 '(' в вашей функции, но 3 ')'?

dWinder 28.05.2018 07:36

Вероятно, вы захотите вернуть логическое значение / бит, а не таблицу. Вам нужно только одно значение, и похоже, вы хотите использовать его в предложении select.

Horia Coman 28.05.2018 07:43

Да, пожалуйста, проверьте мой код и помогите @Horia Coman

Purge Project 28.05.2018 07:47

Каков ожидаемый результат? Что вы хотите, чтобы функция isliked возвращала?

dWinder 28.05.2018 08:24

Он вернет логическое значение, т.е. если понравилось, то 1 иначе 0

Purge Project 28.05.2018 08:27
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
6
288
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите, чтобы функция возвращала логическое значение, используйте:

CREATE FUNCTION isliked(pid INT, uid INT)
RETURNS BIT
   RETURN ( EXISTS ( SELECT 1 FROM likedata ld WHERE post_id = pid AND user_id = uid ) )

Другие вопросы по теме