@Magmar

Ошибка #1064. Как объявлять переменные в mysql 8.0?

Ошибка #1064. Как объявлять переменные в mysql 8.0?
create trigger added_trigger after INSERT on `путевой лист` 
BEGIN
    DECLARE @ID1 int;
    declare @Code_Bus varchar(20);
    declare @Service_number varchar(20);
    declare @Status varchar(15);
end
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Нет такого понятия как местные переменные.

Есть переменные локальные. Они определяются в рамках блока кода в хранимой конструкции (функция, процедура, триггер и пр.), имеют определённый тип, и существуют только в том блоке, в котором определены. Имя начинается НЕ с символа @.

Есть переменные, определённые пользователем. Имя начинается с символа @. Не требуют определения, существуют в течение всей сессии.

В показанном коде - мешанина. Попытка определить пользовательскую переменную, что приводит к ошибке синтаксиса. Показанный код был бы корректен в MS SQL (SQL Server), но не в MySQL.

В общем, собак - убрать. Всех.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Miron11
Пишу sql 20 лет. Срок :)
пример из книги, поищите ее, это классика
MySQL Stored Procedure Programming
By Steven Feuerstein, Guy Harrison
...............................................
Publisher: O'Reilly
Pub Date: March 2006
Print ISBN-10: 0-596-10089-2
Print ISBN-13: 978-0-59-610089-6
Pages: 636

-------------------------------------------
CREATE TRIGGER account_balance_au
 AFTER UPDATE ON account_balance FOR EACH ROW
BEGIN
  DECLARE dummy INT;

  IF NEW.balance<0 THEN
     SET NEW.balance=NULL;
  END IF;

END
$$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы