如何将命名参数传递给postgres中存储过程中的where子句

时间:2014-11-01 14:32:56

标签: sql postgresql plpgsql

我试过Postgres 9.3

CREATE OR REPLACE FUNCTION f_tsd(koakuupav date, kolkuupaev date)
  RETURNS TABLE (
isikukood int
) AS
$func$
select 1 where current_date between koakuupaev and kolkuupaev
$func$ LANGUAGE sql STABLE;

但收到错误

ERROR:  column "koakuupaev" does not exist

在plpgsql中,它会在运行时导致相同的错误:

CREATE OR REPLACE FUNCTION f_tsd(koakuupav date, kolkuupaev date)
  RETURNS TABLE (
isikukood int
) AS
$func$
BEGIN
RETURN QUERY  select 1 where current_date between  koakuupaev and kolkuupaev;
end; $func$ LANGUAGE plpgsql stable;

select * from f_tsd(current_date, current_date)

如何将参数传递给Postgres函数中的where子句? 根据文档命名参数必须工作。

1 个答案:

答案 0 :(得分:3)

第一个参数名称koakuupav缺少e中的pav而不是paev

f_tsd(koakuupav date, kolkuupaev date)

between  koakuupaev and kolkuupaev