Синтаксическая ошибка MySQL Workbench для OUTPUT в хранимой процедуре
Я объявил переменную с именем order_id
что я хочу сохранить автоматически увеличенный набор идентификаторов для порядка, который я пытаюсь вставить. Я получаю синтаксическую ошибку в OUTPUT
,
Я прочитал много примеров, и то, что я вижу, это правильный способ его кодирования. Весь код находится внутри хранимой процедуры. Вставка порядка и остальная часть процедуры работают, за исключением того, что мне нужен автоматически увеличенный идентификатор для вставки в другую таблицу.
CREATE DEFINER=`name`@`%` PROCEDURE `conduct_order`(
IN username_par VARCHAR(50),
IN addr_par VARCHAR(100),
IN zip_par VARCHAR(45))
BEGIN
DECLARE user_addr VARCHAR(100);
DECLARE user_zip VARCHAR(45);
DECLARE user_country VARCHAR(100);
DECLARE user_phone VARCHAR(45);
DECLARE user_email VARCHAR(45);
DECLARE this_date VARCHAR(45);
DECLARE temp INT;
SET user_id = (SELECT id FROM customers WHERE username= username_par);
SET user_addr = addr_par;
SET user_zip = zip_par;
SET user_country = (SELECT country FROM customers WHERE username=username_par);
SET user_phone = (SELECT phone FROM customers WHERE username=username_par);
SET user_email = (SELECT email FROM customers WHERE username=username_par);
SET this_date = (SELECT CURDATE());
INSERT INTO orders(
customer_id,
customer_addr,
customer_phone,
customer_email,
order_date,
order_state,
customer_postalcode,
customer_country)
OUTPUT order_id INTO temp
VALUES(
user_id,
user_addr,
user_phone,
user_email,
this_date,
'not sent',
user_zip,
user_country);
INSERT INTO order_items(order_id, product_id, amount)
VALUES(
(SELECT id FROM orders
WHERE customer_id=user_id
AND order_date=this_date
AND customer_addr=user_addr
AND customer_postalcode=user_zip
AND customer_country=user_country),
(SELECT product_id FROM carts WHERE customer_id=user_id),
(SELECT amount FROM carts WHERE customer_id=user_id));
END
MySQL верстак говорит
Синтаксическая ошибка: неожиданный вывод (идентификатор)
Я понятия не имею, что не так.
РЕДАКТИРОВАТЬ: я нашел еще один вопрос на стеке потока с аналогичной проблемой, которая была решена с помощью табличной переменной, но я не могу объявить табличную переменную. Wordbench говорит
ТАБЛИЦА недопустима в данный момент.
Это когда я пытаюсь `DECLARE MyTableVar TABLE (IdentityColumn BIGINT);