如何使用MySQL Workbench创建函数?

时间:2014-10-11 12:34:01

标签: mysql function mysql-workbench

我有一个MSSQL背景。

我正试图通过右键点击'Functions' > 'Create Function'在MySQL Workbench中创建一个函数。

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

第二个Qn。 (相关的)

如果我使用函数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;

1 个答案:

答案 0 :(得分:0)

您没有说明您正在使用的MySQL Workbench版本。

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

delimiter $$

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

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

enter image description here

但是,某些更改(尤其是您在MySQL Workbench中自己添加或删除的内容)已经被跟踪,或者将来会在未来的版本中进行更新。