首页 > 解决方案 > 在mysql中定义分隔符

问题描述

我在 mySQL 中创建存储过程时遇到问题。我认为问题在于它将我的分隔符视为字符串,但我可能错了。这是我的代码:

DELIMITER //
CREATE PROCEDURE getOrderInfo (IN whichorderID int)
BEGIN
    SELECT hslineitem.orderId, hsorders.orderdate, hslineitem.partNum, hslineitem.numOrdered,
            hslineitem.price
    FROM hslineitem, hsorders
    WHERE hslineitem.orderId = hsorders.orderId
    AND orderID = whichorderID ;
END 
//
DELIMITER;

错误信息

那么,是否有一种特定的方式我需要确定它是分隔符而不是字符串?我一直在网上查看其他示例,但它们似乎没有什么不同。提前致谢!

标签: mysqldelimiter

解决方案


您的语句在最后一个分号之前缺少一个空格,因为在这种情况下分号实际上是DELIMITER命令的参数。

只有将分隔符重新设置回分号后才能正常使用:

DELIMITER //
CREATE PROCEDURE getOrderInfo (IN whichID int)
BEGIN
    SELECT *
    FROM orders
    WHERE id = whichID;   -- this semicolon is interpreted as text
END//
DELIMITER ;               -- space is needed here!
SELECT 1 FROM dual;       -- but not here.

推荐阅读