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


如果是的话->然后更新
其他->创建




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

最佳答案

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

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 ;

10-07 21:00