Я пытаюсь создать код, который добавит новый заказ в список заказов с помощью хранимой процедуры, и пытаюсь вызвать процедуру как таковую: CALL test_order (20,12,1, @order);
Я все время получаю сообщение об ошибке @ order_id / order_id с приведенным ниже кодом. Я могу создать хранимую процедуру, но значение не возвращается.
При использовании приведенного ниже кода я получаю сообщение об ошибке:
ERROR 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '@order_id INT) BEGIN DECLARE order_id INT; ОБЪЯВИТЬ storeID VARCHAR (255); DECLARE 'в строке 1
CREATE PROCEDURE test_order(IN customerID INT,IN productID INT,IN qty INT, OUT @order_id INT)
BEGIN
DECLARE order_id INT;
DECLARE storeID VARCHAR(255);
DECLARE staffID INT;
DECLARE listPrice DECIMAL(10,2);
START TRANSACTION;
/*storeID */
SELECT s.store_id FROM stocks as s INNER JOIN products as p USING(product_id) WHERE p.product_ID = productID ORDER BY s.quantity DESC LIMIT 1 INTO storeID;
/* Next Order */
SELECT max(order_id) + 1 FROM orders INTO @order_id;
/* Staff */
SELECT staff_id FROM staffs where store_id = storeID limit 1 INTO staffID;
/* Order */
INSERT INTO orders VALUES (@order_id, customerID, 1, CURDATE(), ADDDATE(CURDATE(), interval 7 day), NULL, storeID, staffID);
/* Price */
SELECT list_price FROM products WHERE product_id = productID INTO listPrice;
/* Item Row */
INSERT INTO order_items VALUES (@orderId, 1, productID, qty, listPrice, 0);
END //
Когда я беру символ @ из процедуры, я могу создать процедуру, но order_id имеет значение «null». Пример: CREATE PROCEDURE test_order (IN customerID INT, IN productID INT, IN qty INT, OUT order_id INT)
Что не так с @order_id?