【问题标题】:Defining delimiters in mysql [duplicate]在mysql中定义分隔符[重复]
【发布时间】:2018-11-21 21:47:44
【问题描述】:

我在 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;

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

【问题讨论】:

  • 1.你是如何运行这个查询的? 2. 为什么选择//?您是否尝试过其他方法,例如$$
  • 只需将分隔符切换回原来的样子 ;-) 。 :-) END // DELIMITER ;
  • $$ 也不起作用。这是我的书提供给我的仅有的两个例子,也是我在网上找到的仅有的两个。
  • Alex,您能否进一步详细说明您之前所说的含义?我不确定我是否理解。
  • 可能只是“DELIMITER”和最后一个分号之间缺少空格吗?

标签: mysql delimiter


【解决方案1】:

您的语句在最后一个分号之前缺少一个空格,因为这种情况下的分号实际上是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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多