0

我正在尝试在我的 Postgres 数据库中创建以下函数:

create or replace function public.extract_hour(time_param timestamp with time zone) returns double precision language sql as $function$
SELECT EXTRACT(hour from timestamp time_param);
$function$;

但我收到以下错误:

ERROR:  syntax error at or near "time_param"

我试图把,而不是time_param $0,但同样的错误发生。有人可以解释我如何解决这个问题吗?

4

1 回答 1

1

显然,您使用的是旧版本的 PostgreSQL(您忽略了提供)。从 PostgreSQL 9.2 开始可以引用参数名称。在旧版本中,您只能参考位置参数:

CREATE OR REPLACE FUNCTION public.extract_hour(time_param timestamptz)
  RETURNS double precision LANGUAGE sql AS
$function$
SELECT EXTRACT(hour from $1);
$function$;

我还删除了放错位置的关键字timestamp

虽然很长一段时间以来,PL/pgSQL 函数中都可以引用参数名称。
我们最近修复了一个相反的文档故障。

于 2013-05-15T12:29:37.827 回答