【问题标题】:MySQL Stored Procedure Case Statement Syntax Error - ContdMySQL 存储过程案例语句语法错误 - 续
【发布时间】:2018-09-08 09:37:15
【问题描述】:

过程包含语法错误。请帮我找出错误。 mySQL Workbench 说这有 8 个错误,不能应用于数据库。我已经发布了这个问题。人们告诉我将 CASE 语句更改为 IF。即使更改后,错误仍然存​​在。我不知道如何将这篇文章嵌套在原始问题下。实际帖子发布在此link。 修改后的语法按要求发布 @Caius Jard

CREATE PROCEDURE `calculate_amount` (in IN_book_id INT,  in IN_qty INT )
BEGIN
-- declare
DECLARE m_prdct VARCHAR(10);
DECLARE m_cust_id INT(5);

-- select into
SELECT 
    Product
FROM
    Bookings
WHERE
    Book_id = IN_book_id INTO m_prdct;

SELECT 
    Cust_id
FROM
    Bookings
WHERE
    Book_id = IN_book_id INTO m_cust_id;

-- conditionals & action
IF (m_prdct = '20ltr') THEN
INSERT INTO Amount(Cust_id,Book_id,Can,300ml,500ml,1lit,2lit) VALUES(m_cust_id,IN_book_id,(SELECT Rate.Can*Bookings.Qty FROM Rate,Bookings WHERE Bookings.Book_id=IN_book_id),0,0,0,0); 

ELSEIF (m_prdct = '300ml') THEN
INSERT INTO Amount(Cust_id,Book_id,Can,300ml,500ml,1lit,2lit) VALUES(m_cust_id,IN_book_id,0,(SELECT Rate.300ml*Bookings.Qty FROM Rate,Bookings WHERE Bookings.Book_id=IN_book_id),0,0,0);

ELSEIF (m_prdct = '500ml') THEN 
INSERT INTO Amount(Cust_id,Book_id,Can,300ml,500ml,1lit,2lit) VALUES(m_cust_id,IN_book_id,0,0,(SELECT Rate.500ml*Bookings.Qty FROM Rate,Bookings WHERE Bookings.Book_id=IN_book_id),0,0); 

ELSEIF (m_prdct = '1ltr') THEN 
INSERT INTO Amount(Cust_id,Book_id,Can,300ml,500ml,1lit,2lit) VALUES(m_cust_id,IN_book_id,0,0,0,(SELECT Rate.1lit*Bookings.Qty FROM Rate,Bookings WHERE Bookings.Book_id=IN_book_id),0); 

ELSE 
INSERT INTO Amount(Cust_id,Book_id,Can,300ml,500ml,1lit,2lit) VALUES(m_cust_id,IN_book_id,0,0,0,0,(SELECT Rate.2lit*Bookings.Qty FROM Rate,Bookings WHERE Bookings.Book_id=IN_book_id)); 
-- end
END IF;
END

【问题讨论】:

    标签: mysql if-statement stored-procedures syntax-error


    【解决方案1】:

    您需要引用以数字开头的标识符:

    INSERT INTO Amount(Cust_id,Book_id,Can,`300ml`,`500ml`,`1lit`,`2lit`) ... 
    

    【讨论】:

    • 谢谢@Lukasz Szozda,它清除了 7 个错误,但仍然显示一个错误
    • mySQL Workbench 显示它存在语法错误,但在应用反勾号后,它成功应用了错误。我认为它在这方面有一个错误。非常感谢@LukaszSzozda
    猜你喜欢
    • 2013-09-23
    • 2012-04-12
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多