Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL工作台创建函数?_Mysql_Function_Mysql Workbench - Fatal编程技术网

如何使用MySQL工作台创建函数?

如何使用MySQL工作台创建函数?,mysql,function,mysql-workbench,Mysql,Function,Mysql Workbench,我有MSSQL的背景 我试图通过右键单击'Functions'>'create function'在MySQL Workbench中创建一个函数 我插入此文本以在窗口中创建函数,但它在最后一行缺少'if'(下面的sql)时指出sql中存在错误。我错过了什么 第二个问题。(相关) 如果我使用函数SQL(不使用MySQL Workbench中的菜单)创建函数,则会创建该函数,但它不会出现在我正在处理的模式中显示的“函数”中。 在MySQL Workbench中创建函数的推荐方法是什么 谢谢 CREA

我有MSSQL的背景

我试图通过右键单击
'Functions'>'create function'
在MySQL Workbench中创建一个函数

我插入此文本以在窗口中创建函数,但它在最后一行
缺少'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;
CREATE函数fnIsExcluded(包含NVARCHAR(15),无效十进制)
返回位
开始
声明单个VARCHAR(20)默认为空;
声明返回值位;
如果(长度(共格数))<1
然后
设置返回值=0;
如果ConcattedString为NULL,则为ELSE
然后
设置返回值=0;
否则,如果InValue为NULL
然后
设置返回值=0;
其他的
设置返回值=1;
如果结束;
返回值;
结束;

您没有说您使用的是哪个版本的MySQL Workbench

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

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

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


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

如果您将其缩短为“如果(len)谢谢Mike,我在MacOSX上使用6.2.3”,会发生什么。我已经按照您的建议尝试了手动刷新模式,但没有效果。注意:当我单击模式并单击它旁边的信息图标(I)时,我可以看到我在“函数”、“存储过程”选项卡下创建的函数和例程。另外,我已经解决了语法错误。