bro*_*web 5 mysql stored-procedures delimiter
我对环境非常陌生,我对添加到代码末尾的一行有疑问。我遵循的指南是:
http://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/
如果有人对 MySQL 存储过程有更好的了解,我会全力以赴。
在我问之前,这是我使用的环境:操作系统:Windows 7 / WAMP (MySQL 5.5.24) / MySQL Workbench
我被指示定义一个分隔符;就我而言,我坚持使用默认的“$$”。
我创建的存储过程是:
DELIMITER $$
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';
END $$
Run Code Online (Sandbox Code Playgroud)
当我应用这个存储过程并看到审查屏幕时,我看到添加了一行新代码;
在底部:
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
这条背阔线;添加它是因为 DELIMITER 语句宣布了一个块,在该块中可以使用定义的分隔符 ($$),从而最终关闭该块?
当使用内置过程编辑器时,MySQL Workbench 添加了一些额外的命令:
\n\nUSE `test`; // <----------\nDROP procedure IF EXISTS `p2`; // <----------\n\nDELIMITER $$\nUSE `test`$$ // <----------\nCREATE PROCEDURE test.`p2` ()\nLANGUAGE SQL\nDETERMINISTIC\nCOMMENT \'Adds "nson" to first and last names in the record.\'\nBEGIN\nSELECT \'Hello World\';\nEND $$\n\nDELIMITER ; // <----------\nRun Code Online (Sandbox Code Playgroud)\n\n这些命令与存储过程语法并不严格相关,它们只是一种商品\xe2\x80\x94其他MySQL客户端(例如HeidiSQL或官方命令行实用程序)不会添加它们。最后一次分隔符更改可能是重置,以避免同一连接上的未来语句出现问题。
\n\n您需要更改分隔符以指示客户端过程代码的开始和结束位置。问题是过程主体通常是 SQL 语句的集合,因此省略分隔符更改将使 MySQL 认为您正在尝试运行一系列语句,其中第一个语句是:
\n\nCREATE PROCEDURE test.`p2` ()\nLANGUAGE SQL\nDETERMINISTIC\nCOMMENT \'Adds "nson" to first and last names in the record.\'\nBEGIN\nSELECT \'Hello World\';\nRun Code Online (Sandbox Code Playgroud)\n\n您正在DELIMITER $$告诉 MySQL 您的完整语句从CREATE到END。它只是语法糖:DELIMITER甚至不是 SQL 关键字。例如,HeidiSQL 提供了一个带有文本框的 GUI,您可以在其中编写过程主体,因此您不需要 DELIMITER 解决方法。
| 归档时间: |
|
| 查看次数: |
12641 次 |
| 最近记录: |