如何在函数中设置变量值?

时间:2019-01-04 14:33:06

标签: postgresql

我想基于给该函数的参数来更改该函数中的模式搜索路径。但是,称之为:

CREATE FUNCTION test(in_schema text)
RETURNS text
LANGUAGE plpgsql
AS $fun$
BEGIN
  SET search_path TO in_schema, public;

  RETURN '';
END;
$fun$

不起作用。它将搜索路径设置为in_schema, public,而不是我在函数中提供的搜索路径。

如何在函数内部设置搜索路径?

1 个答案:

答案 0 :(得分:0)

使用dynamic sql:

CREATE FUNCTION test(in_schema text)
RETURNS text
LANGUAGE plpgsql
AS $fun$
BEGIN
  EXECUTE format('SET search_path TO %I, public', in_schema);

  RETURN '';
END;
$fun$