在 mysql 中定义定界符
Defining delimiters in 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;
那么,是否需要一种特定的方法来识别它是一个分隔符而不是一个字符串?我一直在网上查看其他示例,它们似乎并没有做任何不同的事情。提前致谢!
你的语句在最后一个分号之前缺少一个 space,因为在这种情况下分号实际上是 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.
我在 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;
那么,是否需要一种特定的方法来识别它是一个分隔符而不是一个字符串?我一直在网上查看其他示例,它们似乎并没有做任何不同的事情。提前致谢!
你的语句在最后一个分号之前缺少一个 space,因为在这种情况下分号实际上是 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.