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