postgres 函数中 CASE 附近的语法错误
Syntax error near CASE on postgres function
CREATE OR REPLACE FUNCTION public.defaultmapviewport(hasura_session json)
RETURNS viewport_info
STABLE
AS $function$
case hasura_session ->> 'x-hasura-default-country-code'
when 'FR' then select lat, lng from places where slug_en = 'city-paris'
when 'ES' then select lat, lng from places where slug_en = 'municipality-madrid'
end;
END $function$ language SQL;
我在大小写附近遇到语法错误,尽管它看起来是正确的。可能是什么问题?
视口信息:
create table viewport_info(
lat float,
lng float
);
正如@AdrianKlaver 评论的那样,CASE
表达式不能独立存在,它必须是 SELECT
查询的一部分。你会想要使用
CREATE OR REPLACE FUNCTION public.defaultmapviewport(hasura_session json)
RETURNS viewport_info
STABLE
AS $function$
SELECT lat, lng
FROM places
WHERE slug_en = (CASE hasura_session ->> 'x-hasura-default-country-code'
WHEN 'FR' THEN 'city-paris'
WHEN 'ES' THEN 'municipality-madrid'
END);
$function$ language SQL;
CREATE OR REPLACE FUNCTION public.defaultmapviewport(hasura_session json)
RETURNS viewport_info
STABLE
AS $function$
case hasura_session ->> 'x-hasura-default-country-code'
when 'FR' then select lat, lng from places where slug_en = 'city-paris'
when 'ES' then select lat, lng from places where slug_en = 'municipality-madrid'
end;
END $function$ language SQL;
我在大小写附近遇到语法错误,尽管它看起来是正确的。可能是什么问题?
视口信息:
create table viewport_info(
lat float,
lng float
);
正如@AdrianKlaver 评论的那样,CASE
表达式不能独立存在,它必须是 SELECT
查询的一部分。你会想要使用
CREATE OR REPLACE FUNCTION public.defaultmapviewport(hasura_session json)
RETURNS viewport_info
STABLE
AS $function$
SELECT lat, lng
FROM places
WHERE slug_en = (CASE hasura_session ->> 'x-hasura-default-country-code'
WHEN 'FR' THEN 'city-paris'
WHEN 'ES' THEN 'municipality-madrid'
END);
$function$ language SQL;