MySQL хранимая функция выдает ошибку (если - еще) - PullRequest
0 голосов
/ 16 мая 2019

У меня есть сохраненная функция, которая не будет хорошо работать, но я не знаю, что я делаю неправильно. Я хочу проверить, существует ли ключ в базе данных.

  • если это так -> тогда обновите
  • еще -> создать

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

1 Ответ

0 голосов
/ 16 мая 2019

Исправление синтаксических ошибок - вам нужно будет настроить входные параметры.

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 ;
...