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

PostgreSQL ecpg:如何使用多个out参数调用函数,postgresql,ecpg,Postgresql,Ecpg,假设我存储了函数foobar: 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; 从ecpg程序调用此函数的惯用方法是什么? 到目前为止,我发现最好的是 EXEC SQL SELECT (fooba

假设我存储了函数foobar:

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;
从ecpg程序调用此函数的惯用方法是什么? 到目前为止,我发现最好的是

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


但这似乎相当笨拙。

记住空值,添加指示符变量

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

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;
execsql开始声明部分;
:foo_ind short;
execsqlbegindeclare部分;
EXEC SQL选择p_foo,p_bar到:foo:foo_ind,:bar:bar_ind FROM foobar();
foo=(foo_ind<0)?0:foo;
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;