如何使用 MySQL Workbench 创建函数?

Posted

技术标签:

【中文标题】如何使用 MySQL Workbench 创建函数?【英文标题】:How to create a function using MySQL Workbench? 【发布时间】:2014-12-06 12:39:47 【问题描述】:

我有 MSSQL 背景。

我正在尝试通过右键单击 'Functions' > 'Create Function'mysql Workbench 中创建一个函数。

我将此文本插入到窗口中以创建函数,但它在最后一行 missing 'if'.(SQL 下面) 处显示 sql 中有错误。我错过了什么?

第二问。 (相关)

如果我使用函数 SQL(而不是使用 MySQL Workbench 中的菜单)创建函数,该函数会被创建,但它不会出现在正在处理的架构中显示的“函数”中。 在 MySQL Workbench 中创建函数的推荐方法是什么?

谢谢。

CREATE FUNCTION fnIsExcluded(ConcattedString NVARCHAR(15), InValue DECIMAL)
RETURNS BIT 

BEGIN 
    DECLARE individual VARCHAR(20) DEFAULT NULL;
    DECLARE ReturnValue BIT;

    IF (LENGTH(ConcattedString)) < 1
        THEN
            SET ReturnValue = 0;


    ELSE IF ConcattedString IS NULL
    THEN
        SET ReturnValue = 0;


    ELSE IF InValue IS NULL
    THEN

        SET ReturnValue = 0;

    ELSE
     SET ReturnValue = 1;

    END IF;

     RETURN ReturnValue;

END;

【问题讨论】:

如果你把它缩短到 'if(len) 【参考方案1】:

你没有说你使用的是什么版本的 MySQL Workbench。

1) 你的例程编辑器中的语法错误是因为在旧版本中编辑器没有自动处理分隔符。因此,您需要一个命令来更改默认分隔符,例如:

delimiter $$

(在文本顶部)将默认值(分号)更改为自定义值(双美元)。您必须这样做的原因是函数定义中需要默认分隔符,如果不更改客户端(此处为 MySQL Workbench)会错误地将您的函数命令拆分为单独的命令。但是,您可以更新到最新的 MySQL Workbench 版本(撰写本文时为 6.2.3)以自动处理此问题。

2) 通常无法自动获取 db 结构中的更改,因为这意味着要以频繁的时间间隔加载所有 db 内容,这对于任何非平凡的 db 都是不可行的。因此,您必须通过单击刷新按钮手动触发此操作。

但是,一些更改(尤其是您自己在 MySQL Workbench 中所做的添加或删除)已经被跟踪或将在未来的版本中出现)。

【讨论】:

谢谢 Mike,我在 MacOSX 上使用 6.2.3。我已经按照您的建议尝试了手动刷新架构,但效果不佳。请注意,当我单击架构并单击它旁边的信息图标 (i) 时,我可以看到我在“函数”、“存储过程”选项卡下创建的函数和例程。 PS。我已经解决了语法错误。

以上是关于如何使用 MySQL Workbench 创建函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL Workbench 中获取表创建脚本?

mysql workbench怎么创建数据库和表

如何用MySQL workbench查询数据

Mysql workbench数据库里数据只读不能修改删除添加,怎么弄

Mysql workbench数据库里数据只读不能修改删除添加,怎么弄

MySQL Workbench 自动增量禁用