gpt4 book ai didi

mysql - 使用 MySQL Workbench 的存储过程

转载 作者:行者123 更新时间:2023-11-29 19:01:16 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/43864603/

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