[英]IF ELSE in postgresql function
我正在尝试创建一个 function 如下
create function public.getSomething(
value1 integer
)
returns table (
id integer,
name varchar(20)
) as
$$
BEGIN
IF value1 = 0 THEN
select a.id, b.name from table1 a inner join table2 b on a.Something = b.Something where
a.column = something and b.column = something;
END IF;
IF value1 = 1 THEN
select a.id, b.name from table1 a inner join table2 b on a.Something = b.Something where
a.column = something and b.column = something;
END IF;
END;
$$ language SQL;
但是当我尝试创建时,我收到以下错误
ERROR: syntax error at or near "if"
我尝试将语言从 SQL 更改为 plpgsql。 但这次我得到
Error: query has no destination for result data
Hint: if you want to discard the results of a select use perform instead
然后我用Perform
替换了Select
。 这次创建了 function 但是当我调用它时没有结果!
我究竟做错了什么? 有没有其他选择? 我正在使用 postgres 版本 12.3
您的 function 稍作修改(大写):
RETURN
语句返回任何内容。 由于您不想丢弃查询结果而是返回它们,因此在 SELECT 语句之前添加RETURN QUERY
。create OR REPLACE function public.getSomething(value1 integer)
returns table (id integer, name varchar(20)) as
$$
BEGIN
IF value1 = 0 THEN
RETURN QUERY select a.id, b.name from table1 a inner join table2 b on a.Something = b.Something where
a.column = something and b.column = something;
END IF;
IF value1 = 1 THEN
RETURN QUERY select a.id, b.name from table1 a inner join table2 b on a.Something = b.Something where
a.column = something and b.column = something;
END IF;
END;
$$ language PLPGSQL;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.