PostgreSQL ecpg:如何使用多个out参数调用函数

时间:2016-07-12 06:52:27

标签: postgresql ecpg

假设我存储了函数foobar:

your_adapter.notifyDataSetChanged()

从ecpg程序调用此函数的惯用方法是什么? 我到目前为止找到的最好的是

create or replace function foobar(
  out p_foo varchar,
  out p_bar varchar
)
returns record as $func$
begin
  p_foo := 'foo';
  p_bar := 'bar';
end;
$func$ language plpgsql;

EXEC SQL SELECT (foobar()).p_foo, (foobar()).p_bar into :foo,:bar;

但这看起来很笨拙。

2 个答案:

答案 0 :(得分:1)

记住空值,添加指标变量。

示例:

EXEC SQL BEGIN DECLARE SECTION;
  :foo_ind short;
EXEC SQL BEGIN DECLARE SECTION;

EXEC SQL SELECT p_foo, p_bar INTO :foo :foo_ind, :bar :bar_ind FROM foobar();

foo  = (foo_ind < 0) ? 0:foo;

答案 1 :(得分:0)

EXEC SQL SELECT p_foo, p_bar INTO :foo, :bar FROM foobar();