Синтаксическая ошибка 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);

0 ответов

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