CREATE PROCEDURE HelloWorld()
BEGIN
SELECT 'Hello World'
END//
DELIMITER
call HelloWorld()
+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
通过上面这个例子, 你能明白 DELIMITER 如何使用了么?
DELIMITER就是 告诉 mysql , 把什么字符, 作为 语句结束的字符。
默认情况下, 是 分号
但是存储过程里面, 有分号的。
如果不定义
DELIMITER //
那么 mysql 遇到第一个就认为语句结束了。
用上面的例子来说, 就是
CREATE PROCEDURE HelloWorld()
BEGIN
SELECT 'Hello World'
就结束了, 但是这样一来, 明显是语法错误的。
因此要使用
DELIMITER //
来, 告诉 MySql , 遇到 // 符号了, 才认为整个语句结束了
这样一来
CREATE PROCEDURE HelloWorld()
BEGIN
SELECT 'Hello World'
END//
才认为语句结束, 然后 mysql 尝试去 编译这个存储过程。 检查语法有效性等处理。
由于前面 存储过程创建好了。
我不希望后面的语句, 还是继续用 // 结束
否则每次
select * from ... where .. //
也是很麻烦的
这种情况下, 我创建完存储过程以后, 使用
DELIMITER
恢复默认值, 也就是继续把 分号, 作为 语句的结束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)