beo*_*ver 2 sql postgresql case syntax-error plpgsql
如何从使用语句的用户定义函数设置值(或直接返回值)case
?
create function is_bar(email varchar) returns boolean as
$$
declare returnValue boolean;
begin
select case when exists
(select * from (users join user_roles on users.userID = user_roles.userID)
where user_email=email and user_role='bar')
then (returnValue := TRUE);
else (returnValue := FALSE);
end;
return returnValue;
end;
$$ language plpgsql;
Run Code Online (Sandbox Code Playgroud)
给我:
ERROR: syntax error at or near ":="
LINE 8: then (returnValue := TRUE);
Run Code Online (Sandbox Code Playgroud)
所描述问题的原因是 SQL(功能)CASE
语句和 PLpgSQL(过程)CASE
语句的更改。
SQL CASE
(功能):
BEGIN
RETURN CASE WHEN EXISTS(..)
THEN true /* value */
ELSE false END; /* ended by END */
END;
Run Code Online (Sandbox Code Playgroud)
PLpgSQL(过程)CASE
:
BEGIN
CASE WHEN EXISTS(..)
THEN
RETURN true; /* statement */
ELSE
RETURN false;
END CASE; /* ended by END CASE */
END;
Run Code Online (Sandbox Code Playgroud)
还有一些其他例子(相同的结果):
a := CASE WHEN b < 10 THEN true ELSE false END;
a := b < 10;
CASE WHEN b < 10 THEN
a := true;
ELSE
a := false;
END CASE;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4854 次 |
最近记录: |