摘要:在本教程中,您将学习如何使用DELIMITER
命令更改默认的 MySQL 分隔符。
编写 SQL 语句时,可以使用分号 ( ;
) 分隔两个语句,如下例所示:
SELECT * FROM products;
SELECT * FROM customers;
Code language: SQL (Structured Query Language) (sql)
MySQL客户端程序(例如MySQL Workbench或mysql程序)使用分隔符( ;
)来分隔语句并单独执行每个语句。
但是,存储过程由多个用分号 (;) 分隔的语句组成。
如果使用MySQL客户端程序定义包含分号字符的存储过程,MySQL客户端程序不会将整个存储过程视为单个语句,而是许多语句。
因此,您必须临时重新定义分隔符,以便可以将整个存储过程作为单个语句传递到服务器。
要重新定义默认分隔符,请使用DELIMITER
命令:
DELIMITER delimiter_character
Code language: SQL (Structured Query Language) (sql)
delimiter_character
可以由单个字符或多个字符组成,例如//
或$$
。但是,您应该避免使用反斜杠 ( \
),因为它是 MySQL 中的转义字符。
例如,以下语句将当前分隔符更改为//
:
DELIMITER //
Code language: SQL (Structured Query Language) (sql)
更改分隔符后,您可以使用新的分隔符来结束语句,如下所示:
DELIMITER //
SELECT * FROM customers //
SELECT * FROM products //
Code language: SQL (Structured Query Language) (sql)
要将分隔符更改为默认分隔符(分号 ( ;
)),请使用以下语句:
DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
对存储过程使用 MySQL DELIMITER
通常,存储过程包含多个用分号 (;) 分隔的语句。要将整个存储过程编译为单个复合语句,您需要暂时将分隔符从分号 (;) 更改为另一个分隔符,例如$$
或//
:
DELIMITER $$
CREATE PROCEDURE sp_name()
BEGIN
-- statements
END $$
DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
请注意,您将在下一个教程中学习创建存储过程的语法。
在此代码中:
- 首先,将默认分隔符更改为
$$
。 - 其次,在存储过程主体中使用 (
;
) 并在END
关键字后使用$$
来结束存储过程。 - 第三,将默认分隔符更改回分号 (;)
在本教程中,您学习了如何使用 MySQL DELIMITER
命令将默认分隔符 (;) 更改为另一个。
本教程有帮助吗?