gpt4 book ai didi

mysql - 使用 MySQL Workbench 的存储过程

转载 作者:可可西里 更新时间:2023-11-01 07:37:32 25 4
gpt4 key购买 nike

我对这个环境很陌生,我对添加到我的代码末尾的一行有疑问。我遵循的指南是:

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 $$

当我应用此存储过程并看到审查屏幕时,我看到添加了一行新代码;

在底部:

DELIMITER ;

这条拉特线;添加它是因为 DELIMITER 语句声明了一个可以在其中使用定义的定界符 ($$) 的 block ,从而最终关闭了该 block 吗?

最佳答案

当使用内置过程编辑器时,MySQL Workbench 添加了一些额外的命令:

USE `test`; // <----------
DROP procedure IF EXISTS `p2`; // <----------

DELIMITER $$
USE `test`$$ // <----------
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';
END $$

DELIMITER ; // <----------

这些命令与存储过程语法并不严格相关,它们只是一种商品——其他 MySQL 客户端(例如 HeidiSQL 或官方命令行实用程序)不会添加它们。最后的定界符更改可能是重置,以避免在同一连接上的 future 语句中出现问题。

您需要更改定界符以指示客户端程序代码的开始和结束位置。问题是过程主体通常是 SQL 语句的集合,因此省略定界符更改会使 MySQL 认为您正在尝试运行一系列语句,其中第一个语句是这样的:

CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';

使用 DELIMITER $$ 告诉 MySQL 您的完整语句从 CREATEEND。它只是语法糖:DELIMITER 甚至不是 SQL 关键字。例如,HeidiSQL 提供了一个带有文本框的 GUI,您可以在其中编写过程主体,因此您不需要 DELIMITER 解决方法。

关于mysql - 使用 MySQL Workbench 的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com