首页 > 解决方案 > MySQL存储函数给出错误(if - else)

问题描述

我有一个无法很好执行的存储函数,但我不知道我做错了什么。我想检查数据库中是否存在密钥。

BEGIN

IF EXISTS(SELECT MenuItemID FROM menuitem WHERE MenuItemID=_MenuItemID)
    BEGIN
    UPDATE menuitem SET MenuID=_MenuID,ParentMenuID=_ParentMenuID,PosIndex=_PosIndex,XamlFileID=_XamlFileID,CanExpand=_CanExpand WHERE MenuItemID=_MenuItemID;
    END
ELSE
    BEGIN
    INSERT INTO menuitem (MenuItemID,MenuID,ParentMenuID,PosIndex,XamlFileID,CanExpand) VALUES (_MenuIt5nuID,_ParentMenuID,_PosIndex,_XamlFileID,_CanExpand);
    END

RETURN ('success');

END

标签: mysqlif-statementstored-functions

解决方案


修复语法错误 - 您将需要调整输入参数。

drop function if exists f;
delimiter $$
create function f(inf varchar(10))
returns varchar(10)
BEGIN

IF EXISTS(SELECT MenuItemID FROM menuitem WHERE MenuItemID=_MenuItemID) then
    UPDATE menuitem 
        SET MenuID=_MenuID,ParentMenuID=_ParentMenuID,PosIndex=_PosIndex,XamlFileID=_XamlFileID,CanExpand=_CanExpand 
         WHERE MenuItemID=_MenuItemID;
ELSE
    INSERT INTO menuitem (MenuItemID,MenuID,ParentMenuID,PosIndex,XamlFileID,CanExpand) VALUES 
     (_MenuIt5nuID,_ParentMenuID,_PosIndex,_XamlFileID,_CanExpand);
end if;

RETURN ('success');

END $$

delimiter ;

推荐阅读