我有如下定义的表
create table dbo.groups
(
groupid uuid not null
constraint pk__groups__149af30a383c48d4
primary key,
groupname varchar(255),
groupparentid uuid
constraint fkgroups635827
references groups
);
alter table dbo.groups
owner to postgres;
字符串
我想写一个函数,将插入到这个表如下:
create or replace function spSetGroup( GroupName text, GroupParentID uuid ) returns uuid
language sql
as
$$
BEGIN
IF $2 = '00000000-0000-0000-0000-000000000000' THEN
INSERT INTO dbo.Groups(GroupID, GroupName, GroupParentID)
VALUES(uuid_generate_v4(), $1, NULL);
else
INSERT INTO dbo.Groups(GroupID, GroupName, GroupParentID)
VALUES(uuid_generate_v4(), $1, $2);
RETURNING GroupID;
END IF;
END
$$;
型
所以在这里,我想检查$2的值,它是GroupParentID,并在此基础上执行到表dbo中的插入。
我还想返回行中新插入的记录的ID
返回组ID
然而,当我尝试创建它时,我得到了以下错误:
[2023-10-27 15:17:34] [42601]错误:语法错误位于或接近“IF”[2023-10-27 15:17:34]位置:141
请问我怎么才能让这个工作?
1条答案
按热度按时间6mzjoqzu1#
在SQL中,你不能使用IF-THEN-ELSE结构,但你也不需要它:使用NULLIF()
字符串