提问人:Pedro 提问时间:1/12/2023 更新时间:1/12/2023 访问量:38
PosgtreSQL create 函数
PosgtreSQL create function
问:
我正在尝试创建函数,但有 42601 错误代码(SQL 错误 [42601]:错误:在“返回”或附近出现语法错误)。尝试返回 false,但仍然有错误。
create or replace function patient_age_in_range(patient_id uuid, low integer, high integer) returns bool
language sql
immutable
returns null on null input
return (select date_part('year', age(birthday)) between low and high from patients where id = patient_id)
答:
0赞
Frank Heikens
1/12/2023
#1
您需要一些引用(大多数人使用 $-quoteing)并删除 RETURN 语句:
CREATE
OR REPLACE FUNCTION patient_age_in_range(patient_id UUID, low INTEGER, high INTEGER)
RETURNS BOOL
LANGUAGE SQL
IMMUTABLE -- are you sure?
RETURNS NULL ON NULL INPUT
AS
$$
SELECT date_part('year', age(birthday))
BETWEEN low AND high
FROM patients
WHERE ID = patient_id
$$;
通常,从表中选择数据的函数被标记为可变的,而不是不可变的。
评论
0赞
1/13/2023
我同意这是错误的,但对于从表中选择的函数来说应该没问题。immutable
stable
评论