Создайте хранимую процедуру, которая удаляет строку при вводе идентификатора для этой строки

У меня проблема с хранимой процедурой, как в синтаксисе, так и в логике. Я получил ошибку ниже при попытке на sqlfiddle.com.

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

создайте процедуру с именем delete_id, которая удаляет строку, идущую по идентификатору

CREATE PROCEDURE DELETE_ID (ID_INPUT IN INT)
AS
BEGIN
  DELETE FROM TABLE ALBUM WHERE ID=ID_INPUT;
END;

Ожидаемый результат: введите идентификатор, и SQL удалит строку, содержащую идентификатор.

Фактический результат:

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 'TABLE ALBUM WHERE ID=ID_INPUT' at line 3

Убери слово table. Это не часть синтаксиса.

Gordon Linoff 08.04.2019 16:33

Возможный дубликат Простая синтаксическая ошибка MySQL

Nico Haase 08.04.2019 16:37

Привет, Гордон, даже когда я убираю слово «таблица». он все еще показывает ошибку: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «IN INT) AS BEGIN DELETE FROM ALBUM WHERE ID=ID_INPUT» в строке 1

Spoonfed 08.04.2019 17:08

Я не эксперт по MySQL, но, похоже, вам нужно написать список параметров как (IN id_input INT)

Robert Kock 08.04.2019 17:48
Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужно добавить "DELIMITER//" в начале кода и "//" в конце. Итак, ваш код должен выглядеть так

DELIMITER //

CREATE PROCEDURE `DELETE_ID`(IN `ID_INPUT` INT)   
BEGIN

DELETE FROM `ALBUM` WHERE `ID` = ID_INPUT;

END //

Спасибо. Вы знаете, как я могу проверить код в db-fiddle? Например, ввести идентификатор и посмотреть, как изменилась таблица после выполнения процедуры?

Spoonfed 08.04.2019 20:10

Извините, я не использовал скрипт db. Я проверил код двумя способами перед публикацией. Первый был в консоли mysql, а второй — в phpmyadmin.

combat womble 08.04.2019 20:24

Если мой код ответил на вашу проблему, можете ли вы отметить его ответом, довольным?

combat womble 09.04.2019 14:42

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