为什么分隔符与mysql中的存储过程一起使用?

时间:2015-03-24 09:01:11

标签: mysql

我试图理解,为什么分隔符与mysql中的存储过程一起使用? 但我不能。

DELIMITER //
CREATE PROCEDURE GetAllProducts()
   BEGIN
       SELECT *  FROM products;
   END //
DELIMITER ;`

1 个答案:

答案 0 :(得分:1)

Mysql的默认分隔符是;,它用于命令行中的一个语句,例如

select * from users ;

当你编写一个触发器或存储过程来执行整个代码时,mysql需要了解它的一块代码/查询。

如果没有提供分隔符,那么当mysql在存储过程或触发器中遇到任何;时,它会认为这是一个语句并将尝试执行它。因此,我们需要为存储过程或触发器提供分隔符,并使mysql理解该分隔符内的任何内容都是一组完整的代码。

所以在你的例子中

SELECT * FROM products; 

当开头提供除;以外的分隔符时,它将成为完整陈述的一部分。